Reputation: 333
i have a file which contain:
aaaaaaaaaa
aaaaaaaaaa
bbbbbbbbbb
cccccccccc
dddddddddd
eeeeeeeeee
ffffffffff
gggggggggg
aaaaaaaaaa
aaaaaaaaaa
bbbbbbbbbb
cccccccccc
dddddddddd
.....
and i want to add number for each four lines,like this result
aaaaaaaaaa
aaaaaaaaaa
bbbbbbbbbb
cccccccccc1
dddddddddd
eeeeeeeeee
ffffffffff
gggggggggg2
aaaaaaaaaa
aaaaaaaaaa
bbbbbbbbbb
cccccccccc3
dddddddddd
....
how to do that, Thanks for any help!
Upvotes: 1
Views: 124
Reputation: 77105
Using awk
:
$ awk '!(NR%4){sub(/$/,++x)}1' file
aaaaaaaaaa
aaaaaaaaaa
bbbbbbbbbb
cccccccccc1
dddddddddd
eeeeeeeeee
ffffffffff
gggggggggg2
aaaaaaaaaa
aaaaaaaaaa
bbbbbbbbbb
cccccccccc3
dddddddddd
Upvotes: 10
Reputation: 289835
You can use this:
$ 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}
if the number or record (of line, in this case) is 4k, then append the incr
variable to the end of the line. Using ++incr
we make it be 1
the first time it is used.1
performs the default awk
behaviour: {print $0}
.Upvotes: 5