2017-06-18 33 views
3

我想計算文本文件第一列的平均值,跳過可被5整除的行。作爲示例,請考慮以下一組數據。使用awk可以被5整除的列跳過行的平均值

1 
2 
3 
4 
5 
6 
7 
8 
9 
10 

對於上面的數據,我可以計算使用awk整個列的平均值作爲

awk '{ sum += $1 } END { if (NR > 0) print sum/NR }' file 

打印出結果5.5

如何擴展此代碼以排除可由5整除的行數?對於上面給出的例子,這將從平均值中排除數字510,導致新的平均值5

回答

2

AWK溶液:

awk '{ NR%5? s+=$0 : c++ }END{ print s/(NR-c) }' file 

輸出:

5 

  • NR%5? s+=$0 : c++ - 三元條件:求和所有值s+=$0如果記錄編號NR不能被5整除,否則 - 計算跳過的記錄(從平均值計算中減去它們)