小编典典

特定模式匹配后插入文件内容

linux

我想以特定的模式匹配插入文件内容。以下是一个示例:在和之间添加file2.txt内容。file1.txt``<tag>``</tag>

file1.txt

<html>
<body>
<tag>
</tag>
</body>
</html>

file2.txt

Hello world!!

我尝试了以下操作,但没有成功。

# sed "/\<tag\>/ {
h
r file2.txt
g
N
}" file1.txt

<html>
<body>
Hello World!!
<tag>
</tag>
</body>
</html>

阅读 228

收藏
2020-06-02

共1个答案

小编典典

尝试以下命令:

sed '/<tag>/ r file2.txt' file1.txt

它产生:

<html>
<body>
<tag>
Hello world
</tag>
</body>
</html>

编辑 以解释命令为何无法按需运行:该r filename命令在当前循环的末尾或读取下一个输入行时添加其内容。而且您正在使用的N命令不会打印任何内容,但会读取下一行,因此在那时Hello world打印,然后再打印正常的行。

在我的情况下,它以读取行<tag>,然后结束循环,因此打印行及其后的文件内容并进行读取直到结束。

2020-06-02