У меня есть следующий текст в File.XML:
<http-listener name="default" socket-binding="http" max-post-size="1073741824" />
Я хотел бы заменить это
<!-- <http-listener name="default" socket-binding="http" max-post-size="1073741824" /> -->>
Я попробовал
sed -i 's/<http-listener name="default" socket-binding="http" max-post-size="1073741824" /><!-- <http-listener name="default" socket-binding="http" max-post-size="1073741824" /> -->>' test.xml
Но получил ошибку
Вставьте необходимый блок (<!--
) в запуске (^
):
sed 's/^/<!-- /'
Пример:
% var='<http-listener name="default" socket-binding="http" max-post-size="1073741824" />'
% sed 's/^/<!-- /' <<<"$var"
<!-- <http-listener name="default" socket-binding="http" max-post-size="1073741824" />
Только отметить, проанализировать структурированные данные как xml
, необходимо использовать инструмент, который понимает структуру, например. xmlstarlet
.
Ответьте на отредактированный вопрос:
Можно соответствовать точной подстроке в запуске и конце в заменяющем использовании \0
отсылать целое соответствие, помещая желаемые заменяющие подстроки вокруг:
sed 's/^<http-listener name="default".*>$/<!-- \0 -->>/'
Пример:
% var='<http-listener name="default" socket-binding="http" max-post-size="1073741824" />'
% sed 's/^<http-listener name="default".*>$/<!-- \0 -->>/' <<<"$var"
<!-- <http-listener name="default" socket-binding="http" max-post-size="1073741824" /> -->>