一个文件--test.log
其中需要计算每行$1和$2的和的总和,例如
10 20
10 20
10 20
。。。
我需要得到答案是90
试着写了一下,在循环的时候总是处理不好,哪位高人帮帮忙,多谢了
THE ANSWER
awk 'BEGIN{summ=0}{summ=summ+$1+$2}END{print summ}' test.log
begin是在处理前做的。END为在处理最后做的。中间的过程应该是一行行的从文件读入,对每一行做一遍处理。
再来一个不限制每行的数据个数的
awk 'BEGIN{sum=0}{for(i=1;i<=NF;i++) sum+=$i;}END{printf("sum=%d\n",sum)}' test.log
[root@asmboy ~]# more 333
1.0 2.01 3.0
0.2 1.01 6.0 9.0
2.3 3.09 5.0 6.3
5 55 2.5
2.3 3.01 5.0 0.3 5.01
2.3 88
[root@asmboy ~]# awk '{if(NF>x)x=NF;print;for(i=1;i<=NF;i++)sum[i]+=$i}END{printf "----------------------------\n";for(j=1;j<=x;j++)printf sum[j]" ";printf "\n"}' 333
1.0 2.01 3.0
0.2 1.01 6.0 9.0
2.3 3.09 5.0 6.3
5 55 2.5
2.3 3.01 5.0 0.3 5.01
2.3 88
----------------------------
13.1 152.12 21.5 15.6 5.01
[root@asmboy ~]# awk '{max=max>NF?max:NF;for(i=1;i<=NF;i++)a[i]+=$i;print}END{print "--------------------";for(j=1;j<=max;j++) printf a[j]"\t"; print ""}' 333
1.0 2.01 3.0
0.2 1.01 6.0 9.0
2.3 3.09 5.0 6.3
5 55 2.5
2.3 3.01 5.0 0.3 5.01
2.3 88
--------------------
13.1 152.12 21.5 15.6 5.01