Я пытаюсь найти эти три строки:
<!--
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
-->
и заменить их на:
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
Когда я пытаюсь
sudo sed -i 's:<!-- <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" /> -->:<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />:' /myfile.xml
Он не находит его, я также пытался вставить в него \ n, но он все равно не работал:
sudo sed -i 's:<!--\n <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />\n -->:<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />:' /myfile.xml
Они не выдают никаких ошибок, это просто не раскомментирует строку. Любой совет поможет, спасибо!
Вот описание многострочных команд в SED: http://docstore.mik.ua/orelly/unix/sedawk/ch06_01.htm
Это боль в заднице. Вы можете последовать совету Эдуардо и использовать
perl -i -p -e
вместо этого.источник
/<\!--/
: совпадающая строка:X
: это метка для команды ветвления "b"/-->/
: совпадающая строкаs@...@...@p
: раздеться "<! -", "->" и вывести результатd
: удалить пространство шаблона и начать новый циклN
: если не совпадает с / -> /, добавьте строкуbX
: ответвление к: X меткаp
: просто напечатайте строку, которая не совпадает с / <! - /и этот второй метод является простой дословной копией и вставкой обычных текстовых файлов небольшого размера (нужен файл сценария оболочки)
источник