如何使用 sed 在“test message1”之后添加新行?

如何使用 sed 在“test message1”之后添加新行?

实际上我有一个名为test1.txt.

在该文件中,我有以下五行:

 'test message1'
 'test message2'
 'test message3'
 'test message4'
 'test message5'

现在我想在该行之后添加一个新行'testing testing'test1.txt文件中'test message1'。怎么做?

答案1

这就是a命令执行以下操作:

sed -e "/test message1/a\\
'testing testing'" < data

该命令将:

将遵循此命令的文本行(除了最后一个以 \ 结尾的文本行从输出中删除)排队,以便在当前周期结束时或在读取下一个输入行时输出。

因此,在这种情况下,当我们将一行与 匹配时,我们运行带有文本参数“ ”/test message1/的命令pend ,该命令将成为文件的新行:a'testing testing'

 'test message1'
 'testing testing'
 'test message2'
 'test message3'
 'test message4'
 'test message5'

您可以通过用反斜杠结束每个非最终行来插入多行。上面的双反斜杠是为了防止shell吃掉它;如果您在独立脚本中使用它,sed则使用单个反斜杠。 GNU也sed接受紧随其后的单行文本a,但这不可移植。

答案2

sed

sed "s/'test message1'/'test message1'\n'testing testing'/g"
  • 搜索“测试消息 1”
  • 替换为“测试消息1”[新行]“测试测试”。

这个答案,您还可以使用:

sed "/'test message1'/a 'testing testing'"
  • 搜索“测试消息 1”
  • 在比赛后添加“测试测试”。

答案3

POSIXly:

$ sed -e "/'test message1'/s//&\\
'testing testing'/" file
'test message1'
'testing testing'
'test message2'
'test message3'
'test message4'
'test message5'

相关内容