我正在整理一个(g)awk文件脚本,它循环输入文件中提供的数字数据,并且必须对每行中的值求和。我正在创建一个数组并将行和添加到每个数组位置。以下是我的代码。逻辑似乎没问题,但输出已关闭:
for(i = 1; i <= NF; ++i){
for(j = 1; j <= NR; ++j){
row[i] += $j
}
}
答案 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