使用sed在第n个匹配模式后插入一些文本
我怎样才能做到?我的文件中有多个,例如foobar模式,我如何在第四个模式之后添加一些文本?以下内容对您有用吗使用sed在第n个匹配模式后插入一些文本,sed,matching,Sed,Matching,我怎样才能做到?我的文件中有多个,例如foobar模式,我如何在第四个模式之后添加一些文本?以下内容对您有用吗 sed ':a;$!{N;ba};s/\(foobar\)/\1\nsome_text/4' inputfile 对于输入: $ cat inputfile line foobar foobar foobar line foobar line foobar line foobar line 这将产生 $ sed ':a;$!{N;ba};s/\(foobar\)/\1\nsome_
sed ':a;$!{N;ba};s/\(foobar\)/\1\nsome_text/4' inputfile
对于输入:
$ cat inputfile
line
foobar
foobar
foobar
line
foobar
line
foobar
line
foobar
line
这将产生
$ sed ':a;$!{N;ba};s/\(foobar\)/\1\nsome_text/4' inputfile
line
foobar
foobar
foobar
line
foobar
some_text
line
foobar
line
foobar
line
在FreeBSD上使用-e
:
sed -e :a -e '$!N' -e '$!ba' -e 's/\(foobar\)/\1\nsome_text/4' inputfile
awk版本:
awk '/foo/{x++} x==4{sub(/foo/,"&some_text")}1' file
例如:
kent$ cat file
foo
foo
trash
foo
trash
foo
foo
foo
kent$ awk '/foo/{x++} x==4{sub(/foo/,"&some_text")}1' file
foo
foo
trash
foo
trash
foosome_text
foo
foo
那么您想在整个文件的第n次出现时进行插入/替换吗?例如一行可以有任意数量的“foobar”@kent:no每行只包含一个foobar,但整个文件包含许多。此错误:sed:1:“:a;$!{N;ba};s/(foobar\…”:未使用的标签'a;$!{N;ba};s/(foobar)/\1\n某些文本/4'阅读,然后询问您没有遵循的内容。如果在结尾插入多行\n,并且也包括在内,我该怎么办?
sed-e:a-e'$!n'-e'$!ba'-e's\\(foobar\)\1\n某些文本\n更多文本\n在新的\u行\u上使用\u/\u字符\4'输入文件