SED Вставить текст после определенного многострочного текстового поля - PullRequest
0 голосов
/ 11 октября 2018

Я ищу для поиска и добавления новой строки текста после определенного многострочного текста, в этом примере мне нужно добавить пробел и текст после "oldText" только в разделе "[old-text]":

[old-text]
oldText

[inserted-new-text]
newTxt

[alsoOld-text]
oldText

Вот что у меня есть, но синтаксис неверный:

printf "[old-text]\noldText"|sed '/\[old-text]\noldTex\t/a [inserted-new-text]\nnewTxt'

1 Ответ

0 голосов
/ 11 октября 2018
$ sed -e '/\[old-text\]/{N;s/oldText/&\n\n[inserted-new-text]\nnewTxt/}' inputFile 

Используйте /<pattern>/, чтобы найти [old-text], а затем используйте N;, чтобы перейти к следующей строке и заменить.

$ printf "[old-text]\noldText" | \
  sed -e '/\[old-text\]/{N;s/oldText/&\n\n[inserted-new-text]\nnewTxt/}'
[old-text]
oldText

[inserted-new-text]
newTxt
...