awk 做加法

一个文件--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

你可能感兴趣的:(shell,职场,休闲)