如何在每隔5行插入文字?

时间:2014-10-27 02:16:04

标签: bash text awk sed

我想在文件的每第5行添加关键字。

源文件

45657m
5535d
46477s
6445d
5656f
5466h
45345f
54777h
...

期望输出

45657m
5535d
46477s
6445d
keyword
5656f
5466h
45345f
54777h
keyword

3 个答案:

答案 0 :(得分:0)

使用GNU Awk,Modulo记录数

只需在第4行之后插入文字,如下所示:

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

答案 1 :(得分:0)

这可能适合你(GNU sed):

sed '1~4i\keyword' file

答案 2 :(得分:0)

GNU Sed解决方案

sed解决方案使用一系列(N)ext命令,然后是(a)ppend来插入关键字本身。例如:

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

由于必须手动指定(N)ext命令的数量,因此对于较大的间隔,它可能不实用。在这种情况下,my awk solution会更容易修改。

相关问题