如何在每四行后添加数字

YOU*_*YOU 1 regex linux bash shell awk

我有一个文件,其中包含:

aaaaaaaaaa
aaaaaaaaaa
bbbbbbbbbb
cccccccccc
dddddddddd
eeeeeeeeee
ffffffffff
gggggggggg
aaaaaaaaaa
aaaaaaaaaa
bbbbbbbbbb
cccccccccc
dddddddddd
.....
Run Code Online (Sandbox Code Playgroud)

我想为每四行添加数字,就像这个结果一样

aaaaaaaaaa
aaaaaaaaaa
bbbbbbbbbb
cccccccccc1
dddddddddd
eeeeeeeeee
ffffffffff
gggggggggg2
aaaaaaaaaa
aaaaaaaaaa
bbbbbbbbbb
cccccccccc3
dddddddddd
....
Run Code Online (Sandbox Code Playgroud)

怎么做,谢谢你的帮助!

jay*_*ngh 10

使用awk:

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

  • 你火了!好一个:) (2认同)

fed*_*qui 5

你可以用这个:

$ awk 'NR%4==0 {$0=$0""++incr} 1' file
aaaaaaaaaa
aaaaaaaaaa
bbbbbbbbbb
cccccccccc1
dddddddddd
eeeeeeeeee
ffffffffff
gggggggggg2
aaaaaaaaaa
aaaaaaaaaa
bbbbbbbbbb
cccccccccc3
dddddddddd
Run Code Online (Sandbox Code Playgroud)

说明

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