如何在每四行后添加数字

时间:2014-03-27 13:25:35

标签: regex linux bash shell awk

我有一个包含以下内容的文件:

aaaaaaaaaa
aaaaaaaaaa
bbbbbbbbbb
cccccccccc
dddddddddd
eeeeeeeeee
ffffffffff
gggggggggg
aaaaaaaaaa
aaaaaaaaaa
bbbbbbbbbb
cccccccccc
dddddddddd
.....

我希望为每四行添加数字,例如此结果

aaaaaaaaaa
aaaaaaaaaa
bbbbbbbbbb
cccccccccc1
dddddddddd
eeeeeeeeee
ffffffffff
gggggggggg2
aaaaaaaaaa
aaaaaaaaaa
bbbbbbbbbb
cccccccccc3
dddddddddd
....

怎么做, 谢谢你的帮助!

2 个答案:

答案 0 :(得分:10)

使用awk

$ awk '!(NR%4){sub(/$/,++x)}1' file
aaaaaaaaaa
aaaaaaaaaa
bbbbbbbbbb
cccccccccc1
dddddddddd
eeeeeeeeee
ffffffffff
gggggggggg2
aaaaaaaaaa
aaaaaaaaaa
bbbbbbbbbb
cccccccccc3
dddddddddd

答案 1 :(得分:5)

您可以使用:

$ awk 'NR%4==0 {$0=$0""++incr} 1' file
aaaaaaaaaa
aaaaaaaaaa
bbbbbbbbbb
cccccccccc1
dddddddddd
eeeeeeeeee
ffffffffff
gggggggggg2
aaaaaaaaaa
aaaaaaaaaa
bbbbbbbbbb
cccccccccc3
dddddddddd

解释

  • NR%4==0 {$0=$0""++incr}如果数字或记录(在这种情况下为行)为4k,则将incr变量附加到该行的末尾。使用++incr时,我们会在第一次使用时1
  • 1执行默认的awk行为:{print $0}