我要在特定的多行文本之后搜索并添加新行文本,在此示例中,我只需要在“ [old-text]”下的“ oldText”之后添加空格和文本:< / p>
[old-text]
oldText
[inserted-new-text]
newTxt
[alsoOld-text]
oldText
这是我到目前为止的内容,但是语法不正确:
printf "[old-text]\noldText"|sed '/\[old-text]\noldTex\t/a [inserted-new-text]\nnewTxt'
答案 0 :(得分:2)
$ 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