Regex 在特定模式匹配后插入文件内容
我想在特定模式匹配处插入文件内容。下面是一个示例:在Regex 在特定模式匹配后插入文件内容,regex,linux,sed,Regex,Linux,Sed,我想在特定模式匹配处插入文件内容。下面是一个示例:在和之间的file1.txt中添加file2.txt内容 file1.txt <html> <body> <tag> </tag> </body> </html> Hello world!! 我试过跟随,但没有成功 # sed "/\<tag\>/ { h r file2.txt g N }" file1.txt <html> <body&
和
之间的file1.txt
中添加file2.txt
内容
file1.txt
<html>
<body>
<tag>
</tag>
</body>
</html>
Hello world!!
我试过跟随,但没有成功
# sed "/\<tag\>/ {
h
r file2.txt
g
N
}" file1.txt
<html>
<body>
Hello World!!
<tag>
</tag>
</body>
</html>
#sed”/{
H
文件2.txt
G
N
}“file1.txt
你好,世界!!
尝试以下命令:
sed '/<tag>/ r file2.txt' file1.txt
sed'//r file2.txt'file1.txt
它产生:
<html>
<body>
<tag>
Hello world
</tag>
</body>
</html>
你好,世界
编辑以解释命令不能按您所需工作的原因:
r filename
命令在当前循环结束时或读取下一个输入行时添加其内容。您正在使用N
命令,该命令不打印任何内容,只读取下一行,因此此时将打印Hello world
,然后打印正常的行流
在我的例子中,它读取带有
的行,然后结束循环,所以打印该行,然后打印文件的内容,并继续读取直到结束。您可以更改
的
,因为它是在
之前打印的。我已经尝试了'/
,它可以工作!!!万岁..有没有办法用CDATA包装内容?我需要添加-I.bak
来写入file1.txtsed-i.bak'//r file2.txt'file1.txt
要在
之后插入文件来实现此功能,是否仍要执行此操作?我尝试使用
来避开反斜杠,但它不起作用。更多信息请参见我的问题:是否有一种方法可以包含包含文件的完整路径(file2.txt应该类似于/tmp/file2.txt)。我试着避开正斜杠,但没有成功work@Birei是否可以不打印“Hello World!!”行,只需插入文件的内容。我可以想象如何用sed的第二次扫描来删除这一行,问题是这是否可以在一次扫描中完成。