場景】--類似於excel中的sum函數對列/行進行統計求和
A01 30 16 9 3 2 30 30 16 9 3 A02 14 6 1 0 7 14 14 6 1 0 A03 4 0 3 0 1 4 0 4 0 3 A09 6 3 0 0 3 6 0 6 3 0
【要求1】--對列進行統計求和
A01 30 16 9 3 2 30 30 16 9 3 A02 14 6 1 0 7 14 14 6 1 0 A03 4 0 3 0 1 4 0 4 0 3 A09 6 3 0 0 3 6 0 6 3 0 TOTAL 54 25 13 3 13 54 44 32 13 6
【要求2】--對行進行統計求和
A01 30 16 9 3 2 30 30 16 9 3 148 A02 14 6 1 0 7 14 14 6 1 0 63 A03 4 0 3 0 1 4 0 4 0 3 19 A09 6 3 0 0 3 6 0 6 3 0 27
代碼實現1
[li0924@localhost awk]$ awk '{for(i=2;i<=NF;i++)a[i]+=$i;print}END{printf "TOTAL \t";for(j=2;j<=NF;j++)printf a[j]"\t"; print""}' inputfile A01 30 16 9 3 2 30 30 16 9 3 A02 14 6 1 0 7 14 14 6 1 0 A03 4 0 3 0 1 4 0 4 0 3 A09 6 3 0 0 3 6 0 6 3 0 TOTAL 54 25 13 3 13 54 44 32 13 6
【解析】
把每列的總和用數組a[i]來表示;用for(i=2;i<=NF;i++)來打印每列的總和
代碼實現2
[li0924@localhost awk]$ awk '{b[NR]=$0; for(i=2;i<=NF;i++)a[NR]+=$i;}END{for(i=1;i<=NR;i++) print b[i]"\t"a[i]}' inputfile A01 30 16 9 3 2 30 30 16 9 3 148 A02 14 6 1 0 7 14 14 6 1 0 63 A03 4 0 3 0 1 4 0 4 0 3 19 A09 6 3 0 0 3 6 0 6 3 0 27
轉自
awk處理案例六 - li0924 - 博客園 http://www.cnblogs.com/lottu/p/3320443.html