Предупреждение : не учитывает переводы строки. Для более подробного ответа см. этот SO-вопрос . (Спасибо, Эд Мортон и Никлас Питер)
Обратите внимание, что избегать всего - плохая идея. Седу нужно много символов для экранирования, чтобы получить их особое значение. Например, если вы укажете цифру в строке замены, она превратится в обратную ссылку.
Как сказал Бен Бланк, в замещающей строке необходимо экранировать только три символа (экранирует себя, косую черту в конце оператора и & для замены всего):
sed -e 's/[\/&]/\\&/g'
Если вам когда-либо понадобится экранировать строку KEYWORD
, вам понадобится следующее:
sed -e 's/[]\/$*.^[]/\\&/g'
Помните, что если вы используете символ, отличный от /
, в качестве разделителя, вам необходимо заменить косую черту в приведенных выше выражениях на используемый вами символ. См. Комментарий PeterJCLaw для объяснения.
Отредактировано: Из-за некоторых угловых случаев, ранее не учтенных, приведенные выше команды менялись несколько раз. Проверьте историю изменений для деталей.