求一定区间内列数据的均值

Finding mean of column data in certain interval

我发现 awk 可用于计算列的平均值,如 here 中所示。假设我想计算第二列的平均值,但只计算特定行之间的元素(例如,从第 2 行到第 6 行)。如何做到这一点?

尝试:

$ awk -v s=2 -v e=6  '{if((>=s)&&(<=e)){sum+=;n++}}END{print (n!=0)?sum/n:0}' input.txt

解释:

#!/bin/awk

BEGIN {
    start = 2
    end = 6
}

{
    if( ( >= start) && ( <= end) )
    {
        sum = sum + 
        n = n + 1
    }
}

END {
    print ( n!= 0) ? sum / n : 0
}

#eof#

希望对您有所帮助!

$ awk '>=2 && <=6 {sum+=; count++} 
                  END {print (count?sum/count:"N/A")}' file

我找到了解决方案。 awk 有参数 FNR 表示记录数,通常表示行号。在 karakfa 的 :

上使用它
awk 'FNR>=2 && FNR<=6 {sum+=; count++} 
   END {print (count?sum/count:"N/A")}' file