使用sed命令在文件的两个模式之间添加文本
我想在两种模式之间添加一些大代码:
This is text to be inserted into the File.
Some Text hereFirst
Second
Some Text here
我想在 第一 和 第二 之间添加 内容:
所需输出:
Some Text hereFirst
This is text to be inserted into the File.
Second
Some Text here
我可以使用sed命令使用两种模式进行搜索,但是我不知道如何在它们之间添加内容。
sed '/First/,/Second/!d' infile
回答:
由于/r
代表 读取文件 ,请使用:
sed '/First/r file1.txt' infile.txt
您可以在此处找到一些信息:使用’r’命令读取文件。
为就地版本添加-i
(即sed -i '/First/r file1.txt' infile.txt
)。
要执行此操作,无论字符大小写如何,均应使用在忽略大小写时使用sed中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_fileThis 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' fileSome 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
以上是 使用sed命令在文件的两个模式之间添加文本 的全部内容, 来源链接: utcz.com/qa/397922.html