若您常常需要寫shell script來幫助自己工作,那麼awk絕對不能少,當然今天我不是來介紹awk的基本運用的,老實說我會的也不是很多,我今天是針對我遇到的問題來備忘一下!

譬如說一個檔案abc
$ 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

這是我目前找到的解決方式囉!若各位高手有任何更好的建議也歡迎提供給我唷!非常感謝!

哇哇3C日誌 綠色工廠2.0
完整文章請看:awk直行加總與平均值的計算方式,最新資訊請到 哇哇3C日誌 收看唷!
更多資訊請參考:
Jump 官方漫畫製作軟體 JUMP PAINT,漫畫競賽獎金 135 萬日幣給有熱誠的你
開箱評測 Samsung Galaxy Note8 相當滿意,雙鏡頭、S Pen、Bixby 全面進化
王者再臨!ROG Chimera、Strix SCAR / Hero 電競筆電磅礡登場