我想输出每N行的总和,例如,每4行:
cat file
1
11
111
1111
2
22
222
2222
3
33
333
3333
输出应为:
6 #(1+2+3)
66 #(11+22+33)
666 #(111+222+333)
6666 #(1111+2222+3333)
我怎么能用awk做到这一点?
答案 0 :(得分:2)
基本上,您可以使用以下awk
命令:
awk -vN=4 '{s[NR%N]+=$0}END{for(i=0;i<N;i++){print s[i]}}' input.txt
您可以按照自己的意愿选择N
。
输出:
6666
6
66
666
但是你看,在迭代awk
数组时,输出没有按预期排序。您可以通过将行号移动-1
来解决此问题:
awk -vN=4 '{s[(NR-1)%N]+=$0}END{for(i=0;i<N;i++){print s[i]}}' a.txt
输出:
6
66
666
6666