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

Sat*_*ish 23 regex linux sed

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

file1.txt

<html>
<body>
<tag>
</tag>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

file2.txt

Hello world!!
Run Code Online (Sandbox Code Playgroud)

我试过跟随它并没有用.

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

<html>
<body>
Hello World!!
<tag>
</tag>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

Bir*_*rei 48

尝试以下命令:

sed '/<tag>/ r file2.txt' file1.txt
Run Code Online (Sandbox Code Playgroud)

它产生:

<html>
<body>
<tag>
Hello world
</tag>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

编辑以解释为什么命令无法正常工作:该r filename命令在当前周期结束时或读取下一个输入行时添加其内容.并且您正在使用N不打印任何内容但只读取下一行的命令,因此在此时Hello world打印,然后是正常的行流.

在我的情况下,它读取行<tag>,然后结束循环,所以打印行,然后打印文件的内容并继续读取直到结束.