Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用sed在第n个匹配模式后插入一些文本_Sed_Matching - Fatal编程技术网

使用sed在第n个匹配模式后插入一些文本

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

我怎样才能做到?我的文件中有多个,例如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_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'输入文件