30

我想在特定模式匹配处插入文件内容。以下是一个示例:在和之间添加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>
4

1 回答 1

58

尝试以下命令:

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

它产生:

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

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

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

于 2013-05-23T13:40:27.753 回答