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

SED在特定多行文本字段后插入文本,sed,centos,Sed,Centos,我希望在特定的多行文本之后搜索并添加一行新文本,在本例中,我只需要在“[old text]”下的“oldText”之后添加空格和文本: 以下是我到目前为止掌握的内容,但语法不正确: printf "[old-text]\noldText"|sed '/\[old-text]\noldTex\t/a [inserted-new-text]\nnewTxt' 使用/查找[旧文本],然后使用N转到下一行并替换 $ printf "[old-text]\noldText" | \ sed -e '

我希望在特定的多行文本之后搜索并添加一行新文本,在本例中,我只需要在“[old text]”下的“oldText”之后添加空格和文本:

以下是我到目前为止掌握的内容,但语法不正确:

printf "[old-text]\noldText"|sed '/\[old-text]\noldTex\t/a [inserted-new-text]\nnewTxt'
使用
/
查找
[旧文本]
,然后使用
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
使用
/
查找
[旧文本]
,然后使用
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

虽然不建议您执行此类任务,但如果您确实必须使用
sed
,请通过。祝您好运。虽然不建议您执行此类任务,但如果您确实必须使用
sed
,请通过。祝你好运,非常感谢!这是可行的,但是你能告诉我“{}”括号是用来做什么的吗?这里不太必要,但它们用于将命令分组在一起。不管有没有,你都会得到同样的答案。非常感谢!这是可行的,但是你能告诉我“{}”括号是用来做什么的吗?这里不太必要,但它们用于将命令分组在一起。不管有没有,你都会得到同样的答案。
$ printf "[old-text]\noldText" | \
  sed -e '/\[old-text\]/{N;s/oldText/&\n\n[inserted-new-text]\nnewTxt/}'
[old-text]
oldText

[inserted-new-text]
newTxt