Ответы:
Если вы соответствуете подстроке всей строки, вы можете использовать s
команду sed с регулярным выражением, чтобы убрать оставшуюся часть строки:
sed -i 's/^.*foo.*$/another string/' myfile.txt
или используйте c
команду для замены совпавшей строки за один раз:
sed -i '/foo/ { c \
another string
}' myfile.txt
Если вы не хотите вводить многострочные команды в командной строке, вместо этого вы можете поместить их в скрипт:
$ cat foo.sed
/foo/ { c \
another string
}
$ sed -i -f foo.sed myfile.txt
}'
находится в отдельной строке от another string
: замена - это все, что находится на этой второй строке, в том числе, }
если вы поставили его там.