О замене строки на sed - PullRequest
1 голос
/ 02 ноября 2011

Я хотел бы заменить все \ r \ n на
в документе, и я пытаюсь это увидеть сценарий ниже

# sed -i 's/\r\n/<br/>' ~/xxd/*

однако я получил эту ошибку обратно

sed: -e выражение # 1, char 12: неизвестная опция для `s '

Как мне решить эту проблему?

Спасибо!

1 Ответ

3 голосов
/ 02 ноября 2011

Ваша проблема в том, что у вас есть разделитель / в строке замены, поэтому sed предполагает, что это конец вашей замены, и что >, следующий за ним, является флагом.

Если ваш sed достаточно современный, просто используйте другой символ-разделитель, такой, который не в строке замены:

pax$ echo hello | sed -e 's/e/<br />/'
sed: -e expression #1, char 9: unknown option to `s'

pax$ echo hello | sed -e 's?e?<br />?'
h<br />llo

В качестве альтернативы, вы можете избежать обидного символа, но я стараюсь избегать этого, так как это приводит к чрезмерным пилообразным sed командам, таким как /\/\/\/\/\/\.

Другая вещь, которую вы можете не заметить, - это попытка использовать \n в своем регулярном выражении, поскольку sed в любом случае работает на линиях. Если вы намереваетесь просто убрать возврат каретки и вставить разрывы строк HTML, тогда следующая команда sed может быть лучше:

s?\r$?<br />?
...