如何用awk计算文本文件中指定行的平均值?
使用awk计算文本文件指定行的平均值
你的问题出在命令逻辑错误:
sum+=NF累加的是字段的数量(NF是当前行的字段个数),而非每个字段的数值;- END块中的
NF是最后一行的字段数,并非第一行的字段数,这也会导致计算偏差。
要计算第一行的平均值,正确做法是遍历第一行的每个字段,累加它们的数值,再除以字段总数,直接在第一行的处理块中输出结果即可:
awk 'NR==1 {sum=0; for(i=1;i<=NF;i++) sum+=$i; print sum/NF}' average.txt
命令解释:
NR==1:匹配文本的第一行;sum=0:初始化累加和为0;for(i=1;i<=NF;i++) sum+=$i:循环遍历第一行的每个字段($1到$NF),将字段值累加到sum中;print sum/NF:计算并输出总和除以字段数的结果。
执行该命令后,会输出预期的5.666667。
内容的提问来源于stack exchange,提问作者MHmmm
相关产品推荐
相关产品推荐

