SED在特定的多行文本字段之后插入文本

时间:2018-10-11 14:48:02

标签: sed centos

我要在特定的多行文本之后搜索并添加新行文本,在此示例中,我只需要在“ [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'

1 个答案:

答案 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