Найдите соответствующий текст и замените следующие две строки в unix - PullRequest
0 голосов
/ 12 апреля 2020

У меня есть такой файл

aaa
bbb
ccc
ddd
eee

Я хочу найти bbb и заменить следующие 2 строки на zzz. Окончательный результат должен быть

aaa
bbb
zzz
zzz
eee

Я попробовал Sed, я могу сделать для одной строки. Не уверен, как это сделать для 2 строк. Пожалуйста помоги. Заранее спасибо

Ответы [ 2 ]

2 голосов
/ 12 апреля 2020

Вы можете выбрать sed или awk:

sed '/bbb/{n;N;s|.*|zzz\
zzz|}' file
awk 'flag{print "zzz";flag--;next};/bbb/{flag=2};1' file

Если вы go для sed, убедитесь, что не заменяете одинарные кавычки на двойные.

2 голосов
/ 12 апреля 2020

С GNU sed:

sed '/bbb/,+2{ /bbb/b; s/.*/zzz/ }' file

С awk:

awk '/bbb/{print; getline; print "zzz"; getline; print "zzz"; next}1' file
...