实际上我有一个名为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'