Вы можете сделать это только с sed
с двумя выражениями, используя обычную замену s/find/replace/
, например,
$ sed 's/rinfo/Rinfo/;s/^number/numbeR/' file
callingNumber: xxxxxxx
irrelevantnumbeRinfo: xxxxxxx
irrelevantnumbeRinfo2: xxxxxxx
numbeR: 12345678
или с grep
,
$ grep -A3 callingNumber file | sed 's/rinfo/Rinfo/;s/^number/numbeR/'
(same result)
или как у вас есть, без -i
, и вы гарантируете, что number
не появится там, где вы не хотите изменять, например, grep -A3 callingNumber file | sed 's/number/numbeR/'
Редактирование на месте с помощью Range от Шаблон и следующие 3 строки
Вы можете использовать sed
с выражением диапазона, чтобы произвести подстановку и отредактировать следующие 3 строки после callingNumber
с помощью:
$ sed -i '/^callingNumber/,4s/number/numbeR/' file
Изменение 3-х строк после каждого вхождения callingNumber
с помощью awk
Если вам нужно изменить три строки после каждого вхождения callingNumber
, тогда вы можете используйте awk
и перенаправьте на новый файл, а затем замените исходный файл, например,
awk '/^callingNumber/{n=0} n<=3 {sub(/number/, "numbeR");n++}1' file > newfile \
mv -f newfile file