awk '{ for (i = 1; i <= NF; i++) sum[i]+=$i} END{for (i in sum) print sum[i]}' file1 > file2
这有助于按记录求和,但类似的方案无助于按列求和(也许)。如何将按列加法推广到 n 列?
cat file1
23 46 45
45 57 58
56 78 74
cat file2
114
160
208
答案1
您想要计算每条记录的字段总和,因此只需:
awk '{sum = 0; for (i = 1; i <= NF; i++) sum += $i; print sum}' < file1 > file2
大括号开始行动在输入的每一行上执行的语句;没有前面的状况这将限制其执行到满足这样的行状况。
每行:
- 将变量初始化
sum
为零。 - 循环遍历字段,从字段 #1 开始,到最后一个字段(特殊变量 )结束,并按该字段的值 ( )
NF
递增。sum
$i
- 打印变量的值
sum
。