Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/18.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
Bash 如何在每第五行中插入文本?_Bash_Text_Awk_Sed - Fatal编程技术网

Bash 如何在每第五行中插入文本?

Bash 如何在每第五行中插入文本?,bash,text,awk,sed,Bash,Text,Awk,Sed,我想在我的文件中每5行添加一个关键字 源文件 期望输出 使用GNU Awk,记录的模数 只需在每4行后插入文本,如下所示: $ awk '{print}; NR % 4 == 0 {print "keyword"}' /tmp/corpus 45657m 5535d 46477s 6445d keyword 5656f 5466h 45345f 54777h keyword 这可能适用于GNU sed: sed '1~4i\keyword' file 基于GNU的解决方案 sed解决方案使

我想在我的文件中每5行添加一个关键字

源文件 期望输出 使用GNU Awk,记录的模数 只需在每4行后插入文本,如下所示:

$ awk '{print}; NR % 4 == 0 {print "keyword"}' /tmp/corpus 
45657m
5535d
46477s
6445d
keyword
5656f
5466h
45345f
54777h
keyword

这可能适用于GNU sed:

sed '1~4i\keyword' file
基于GNU的解决方案 sed解决方案使用一系列Next命令,然后是一个append来插入关键字本身。例如:

$ sed 'N; N; N; a\keyword' /tmp/corpus 
45657m
5535d
46477s
6445d
keyword
5656f
5466h
45345f
54777h
keyword
由于必须手动指定Next命令的数量,因此对于较大的间隔来说,这可能会很麻烦。在这种情况下,将更容易修改

sed '1~4i\keyword' file
$ sed 'N; N; N; a\keyword' /tmp/corpus 
45657m
5535d
46477s
6445d
keyword
5656f
5466h
45345f
54777h
keyword