如何使用sed在第n次出现关键字后添加一行?

Men*_*non 4 sed

使用 sed,我想在第 n 次出现后添加检查

输入:

DCR
DCR
DCR
Run Code Online (Sandbox Code Playgroud)

输出:

DCR
DCR
check
DCR
Run Code Online (Sandbox Code Playgroud)

可以使用sed吗?

gle*_*man 5

使用 GNU sed,您可以替换一行中的n个模式

$ echo "foofoofoofoo" | sed 's/foo/&\nbar/2'
foofoo
barfoofoo
Run Code Online (Sandbox Code Playgroud)

但是对于包含模式的第n行,awk 更容易:

awk -v n=2 -v patt=foo '{print} $0 ~ patt && ++count == n {print "bar"}' <<END
foo1
foo2
foo3
foo4
END
Run Code Online (Sandbox Code Playgroud)
foo1
foo2
bar
foo3
foo4
Run Code Online (Sandbox Code Playgroud)