搜索第一个模式并搜索第二个模式,然后在第二个模式上方插入新行

时间:2018-09-26 21:58:23

标签: bash perl awk sed

我在文件中进行以下文本处理时陷入困境,例如->搜索第一个模式,然后搜索第二个模式,然后在第二个模式上方插入新行。

文件样本:

some text 1
First-search-text some other text
some text 2
some text 3
Second-search-text

要在文件中替换的所需输出:

some text 1
First-search-text some other text
some text 2
some text 3
New line to be inserted
Second-search-text

任何指针将对awk或sed都有很大帮助。

4 个答案:

答案 0 :(得分:2)

在第一个比赛中设置一个标志,然后搜索已设置标志的第二个比赛:

 awk '/First-search-text/{f=1}f&&/Second-search-text/{print "New line to be inserted"}1' file

答案 1 :(得分:2)

使用

ed file <<'END_OF_COMMANDS'
/First-search-text/
/Second-search-text/
i
New line to be inserted
.
wq
END_OF_COMMANDS

答案 2 :(得分:2)

在第一场比赛后的第二场比赛之前插入:

perl -pe'print "New line\n" if $f && /^Second-search-text/; $f||=/^First-search-text/'

在第一场比赛之后的第一场第二场比赛之前插入

perl -pe'print "New line\n" if (/^First-search-text/../^Second-search-text/) =~ /E0/'

Screenshot from Android 4.4.4

答案 3 :(得分:0)

这可能对您有用(GNU sed):

sed '/^First/,/^Second/!b;/^Second/i New line to be inserted' file