awk命令 如何将各个field相加 之后输出一条值,比如文件是 1 1 1 1 2 2 3 2 3 3 4 5 输出为: 6 6 8 8

1 1 1 1\n 2 2 3 2 \n3 3 4 5

awk '{for(i=1;i<$NF;i++)a[i]+=$i}END{for(j=1;j<$NF;j++)print a[j]}' test | xargs

最后列转行的我直接用xargs 处理了 比较方便
如果单纯用awk 也可以处理,不过貌似比较麻烦,但结构可以掌握
awk '{for(i=1;i<$NF;i++)a[i]+=$i}END{for(j=1;j<$NF;j++)printf("%d ",a[j]);printf("\n")}' test
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-10-31
1.txt内容如下
1 1 1 1
2 2 3 2
3 3 4 5

shell#cat 1.txt |awk '{(list1+=$1)(list2+=$2)(list3+=$3)(list4+=$4)}END{print list1,list2,list3,list4}'
6 6 8 8
第2个回答  2012-10-30
awk '{col1+=$1;col2+=$2;col3+=$3;col4+=$4}END{print col1,col2,col3,col4}' file
相似回答