使用 AWK 查找排除某些行的列的平均值
Finding the average of a column excluding certain rows using AWK
我想计算第 5 列(最后一列)的平均值,不包括值为“9999”的行。感谢您的反馈。
77.300 16 1 3.6112914285714268 9.4
77.300 16 2 -0.001737142857145102 20.0
77.300 16 3 5.1570742857142857 8.9
77.300 17 0 3.6112914285714268 8.9
77.300 17 1 2.9484342857142849 11.7
77.300 17 2 -0.001737142857145102 22.6
77.300 17 3 3.5098971428571417 9.2
77.300 18 0 3.5098971428571417 9.4
77.300 18 1 2.9484342857142849 14.0
77.300 18 2 -0.001737142857145102 24.7
77.300 18 3 3.5098971428571417 9.4
77.650 13 0 3.2896914285714267 9.4
77.650 13 1 0.0042514285714272404 24.9
77.650 13 2 2.0769371428571421 9.1
77.650 13 3 0.0042514285714272404 99999
77.650 14 0 1.8255085714285713 9.3
77.650 14 1 0.0042514285714272404 99999
77.650 14 2 1.8255085714285713 9.2
77.650 14 3 0.0042514285714272404 99999
77.650 15 0 3.2896914285714267 8.7
77.650 15 1 4.2542171428571418 8.7
通过awk,
$ awk '!="99999"{sum+=}END{print sum}' file
227.5
解释:
!="99999"
如果第 5 列不包含 99999
,则执行
{sum+=}
将第 5 列的值添加到变量 sum
。同样,当 awk 看到满足给定条件的记录时,它会不断添加第 5 列的值。
最后打印变量sum
。
平均水平。
$ awk '!="99999"{sum+=;cnt++}END{print (cnt?sum/cnt:"NaN")}' file
12.6389
我想计算第 5 列(最后一列)的平均值,不包括值为“9999”的行。感谢您的反馈。
77.300 16 1 3.6112914285714268 9.4 77.300 16 2 -0.001737142857145102 20.0 77.300 16 3 5.1570742857142857 8.9 77.300 17 0 3.6112914285714268 8.9 77.300 17 1 2.9484342857142849 11.7 77.300 17 2 -0.001737142857145102 22.6 77.300 17 3 3.5098971428571417 9.2 77.300 18 0 3.5098971428571417 9.4 77.300 18 1 2.9484342857142849 14.0 77.300 18 2 -0.001737142857145102 24.7 77.300 18 3 3.5098971428571417 9.4 77.650 13 0 3.2896914285714267 9.4 77.650 13 1 0.0042514285714272404 24.9 77.650 13 2 2.0769371428571421 9.1 77.650 13 3 0.0042514285714272404 99999 77.650 14 0 1.8255085714285713 9.3 77.650 14 1 0.0042514285714272404 99999 77.650 14 2 1.8255085714285713 9.2 77.650 14 3 0.0042514285714272404 99999 77.650 15 0 3.2896914285714267 8.7 77.650 15 1 4.2542171428571418 8.7
通过awk,
$ awk '!="99999"{sum+=}END{print sum}' file
227.5
解释:
!="99999"
如果第 5 列不包含99999
,则执行{sum+=}
将第 5 列的值添加到变量sum
。同样,当 awk 看到满足给定条件的记录时,它会不断添加第 5 列的值。最后打印变量
sum
。
平均水平。
$ awk '!="99999"{sum+=;cnt++}END{print (cnt?sum/cnt:"NaN")}' file
12.6389