awk直行加總與平均值的計算方式
$ cat abc
1
2
3
4
5
6
7
8
9
10
加總
$ fmt -w 100 abc awk '{ print $1+$2+$3+$4+$5+$6+$7+$8+$9+$10 }'
平均
$ fmt -w 100 abc awk '{ print ($1+$2+$3+$4+$5+$6+$7+$8+$9+$10)/10 }'但是我今天遇到的一個檔案有幾千幾萬行,這的確困擾我了,讓我一度困惑了幾十分鐘,好險google一直是我的好朋友,順利的找到了解決的方式,而且也發現會用這方法的人還真是厲害,我目前還是有看沒有懂的狀態,但是無論如何還是先紀錄一下來!譬如說一個檔案def
$ cat def
1
2
3
~(省略)
2056
2057
2058加總
$ awk '/nn/&&NR>1{print sum/i;sum=i=0}
> {sum+=$NF;i++}
> END{print sum}' def
2118711
平均
$ awk '/nn/&&NR>1{print sum/i;sum=i=0}
{sum+=$NF;i++}
END{print sum/i}' def
1029.5這是我目前找到的解決方式囉!若各位高手有任何更好的建議也歡迎提供給我唷!非常感謝!