Хотя кажется, что почти никто не использует его, sed
предоставляет команду c
(изменить) для всего -line replace:
c \ text Удалить строки, соответствующие адресу или диапазону адресов, и вывести строки текста, следующие за этим команда.
Так, например, вы можете использовать
sed '/\bHost\b/c\
my new text
' file
для изменения строк, содержащих целое слово Host
, на мой новый текст
. Последовательность \ b
представляет собой границу слова, поэтому она исключает частичные совпадения, такие как Имя хоста
- в GNU sed вы можете использовать \ <
и \>
, то есть \
, и вы также можете поместить новый текст в одну строку:
sed '/\<Host\>/cmy new text' hostfile
, что похоже на то, к чему вы стремились в своем выражении - вы просто пропустили фактический c
и получил спецификаторы границы слова в обратном порядке, то есть <\. . .> \
вместо \ <. . . \>