我想在特定模式匹配时插入文件内容。以下是一个示例:在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>
答案 0 :(得分:45)
尝试以下命令:
sed '/<tag>/ r file2.txt' file1.txt
它产生:
<html>
<body>
<tag>
Hello world
</tag>
</body>
</html>
编辑以解释为什么您的命令无法正常工作:r filename
命令在当前周期结束时或读取下一个输入行时添加其内容。并且您正在使用N
命令,该命令除了读取下一行之外不打印任何内容,因此在那时打印Hello world
,然后打印正常的行流。
在我的情况下,它用<tag>
读取行,然后结束循环,所以打印行,然后打印文件的内容并继续阅读直到结束。