使用sed命令在文件的两个模式之间添加文本

我想在两种模式之间添加一些大代码:

This is text to be inserted into the File.

Some Text here

First

Second

Some Text here

我想在 第一第二 之间添加 内容:

所需输出:

Some Text here

First

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_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

以上是 使用sed命令在文件的两个模式之间添加文本 的全部内容, 来源链接: utcz.com/qa/397922.html

回到顶部