Awk脚本:遍历行并获得总和

时间:2015-08-04 12:26:28

标签: awk

我正在整理一个(g)awk文件脚本,它循环输入文件中提供的数字数据,并且必须对每行中的值求和。我正在创建一个数组并将行和添加到每个数组位置。以下是我的代码。逻辑似乎没问题,但输出已关闭:

for(i = 1; i <= NF; ++i){
   for(j = 1; j <= NR; ++j){
       row[i] += $j
   }
}

1 个答案:

答案 0 :(得分:2)

你无法循环线。通过行循环由awk在读取文件时隐式完成。

因此,您只需更新当前行的数组值:

awk '{for (i=1;i<=NF;i++) a[i]+=$i}' file

然后,您可以在END块中打印摘要。

查看示例:

$ cat a
1 2 3 4 5
6 7 8 9 10
$ awk '{for (i=1;i<=NF;i++) a[i]+=$i} END {for (i in a) print i " -> " a[i]}' a
1 -> 7
2 -> 9
3 -> 11
4 -> 13
5 -> 15