如何总结awk中的每一行?

时间:2015-04-01 21:38:38

标签: awk

我想输出每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做到这一点?

1 个答案:

答案 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