簡體   English   中英

使用awk計算行的平均值

[英]Calculate avg of a row using awk

我一直在編寫一個腳本,通過讀取txt文件的輸入來計算行的平均值

示例文本輸入文件input.txt

157361 155687 156158 156830
149610 151824 152353 152027
159195 158490 159030 159243
153222 154227 154578 154390
168761 170078 170044 170107
147166 146477 146735 147678
155745 152142 155141 154140
148860 150040 149223 148246
147239 149693 148144 147990
148045 147987 149466 149535
146945 146206 145681 145852
156559 155188 156274 154962
143169 143798 142753 144045
153814 153320 153732 156621

我正在研究下面的awk命令:

awk '{sum=0; for(i=0; i<=NF; i++){sum+=$i}; sum/=NF; print sum}' input.txt

我正在獲得156679作為row1 avg的預期結果:“某處其讀取空白區域為變量”,具有上述awk表達式。

cal row1 excpected avg would be :(157361+155687+156158+156830)/4 = 156509

我沒有得到預期的輸出avg am geting是錯誤的預期avg的上述輸入文件

row1 expected avg :156509
row2 expected avg :151454

AWK中的字段編號從1開始,而不是從0 所以,在你的for循環中你需要把i = 1

這樣做:

awk '{sum = 0; for (i = 1; i <= NF; i++) sum += $i; sum /= NF; print sum}' input.txt

我得到了正確的結果:

156509
151454
158990
154104
169748
147014
154292
149092
148266
148758
146171
155746
143441
154372

另一種實現此目標的簡短方法:

$ sed 's/ /+/g;s/.*/(&)\/4/g' file.txt | bc

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM