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

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

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> 

Solutions Collecting From Web of "在特定模式匹配后插入文件的内容"

尝试下面的命令:

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

它产生:

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

编辑为解释为什么你的命令不工作,你想要的: r filename命令添加其内容在当前周期结束时或下一个输入行被读取。 而你正在使用N命令,它不会打印任何内容,只是读取下一行,所以当时Hello world被打印出来,然后是普通的流。

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