我想在两种模式之间添加一些大代码:
File1.txt
This is text to be inserted into the File.
infile.txt
Some Text here First Second Some Text here
我想在 第一 和 第二 之间添加 File1.txt 内容:
所需输出:
Some Text here First This is text to be inserted into the File. Second Some Text here
我可以使用sed命令使用两种模式进行搜索,但是我不知道如何在它们之间添加内容。
sed '/First/,/Second/!d' infile
由于/r代表 读取文件 ,请使用:
/r
sed '/First/r file1.txt' infile.txt
您可以在此处找到一些信息:使用’r’命令读取文件。
为就地版本添加-i(即sed -i '/First/r file1.txt' infile.txt)。
-i
sed -i '/First/r file1.txt' infile.txt
要执行此操作,无论字符大小写如何,均应使用在忽略大小写时使用sed中I建议的标记,同时在某些模式之前添加文本:
I
sed 's/first/last/Ig' file
如评论中所述,以上解决方案只是在模式之后打印给定的字符串,而没有考虑第二个模式。
为此,我将使用带有标志的awk:
awk -v data="$(<patt_file)" '/First/ {f=1} /Second/ && f {print data; f=0}1' file
给定这些文件:
$ cat patt_file This is text to be inserted $ cat file Some Text here First First Second Some Text here First Bar
让我们运行命令:
$ awk -v data="$(<patt_file)" '/First/ {f=1} /Second/ && f {print data; f=0}1' file Some Text here First # <--- no line appended here First This is text to be inserted # <--- line appended here Second Some Text here First # <--- no line appended here Bar