使用shell脚本在指定模式后将多行插入文件

新手上路,请多包涵

我想使用 shell 脚本在文件中插入多行。让我们考虑一下我的输入文件内容是: input.txt:

 abcd
accd
cdef
line
web

现在我必须在 input.txt 文件中的“cdef”行之后插入四行。插入我的文件后应该改变如下:

 abcd
accd
cdef
line1
line2
line3
line4
line
web

我应该使用 shell 脚本进行上述插入。谁能帮我?

原文由 user27 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 969
2 个回答

另一个 sed ,

 sed '/cdef/r add.txt' input.txt

输入.txt:

 abcd
accd
cdef
line
web

添加.txt:

 line1
line2
line3
line4

测试:

 sat:~# sed '/cdef/r add.txt' input.txt
abcd
accd
cdef
line1
line2
line3
line4
line
web

如果要应用 input.txt 文件中的更改。然后,使用 -ised

 sed -i '/cdef/r add.txt' input.txt

如果您想使用正则表达式作为表达式,您必须使用 -E 标签和 sed

 sed -E '/RegexPattern/r add.txt' input.txt

原文由 sat 发布,翻译遵循 CC BY-SA 3.0 许可协议

使用 GNU sed

 sed "/cdef/aline1\nline2\nline3\nline4" input.txt

如果您开始:

 abcd
accd
cdef
line
web

这将产生:

 abcd
accd
cdef
line1
line2
line3
line4
line
web

如果要就地保存对文件的更改,请说:

 sed -i "/cdef/aline1\nline2\nline3\nline4" input.txt

原文由 devnull 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题