当使用awk NR获取文件的总行数时,返回了错误的数字。你能帮忙找出发生了什么事吗?
文件“ test.txt”的内容:
> 2012 09 10 30.0 8 14
fdafadf
> 2013 08 11 05.0 9 1.5
fdafa
> 2011 01 12 02.0 7 1.2
daff
预计以'>'开头的记录的最后一列的平均值。
代码:
awk 'BEGIN{SUM=0}{/^> /{SUM=SUM+$6}END{print SUM/NR}' test.txt
使用此代码,错误地获得了最后一列的平均值,而不是正确的数字3。如何通过awk任务获得正确的结果?谢谢
答案 0 :(得分:3)
能否请您尝试以下。这将占用所有行的最后一列的SUM,并且将一直进行到输入文件读完为止。它将不会计算>
行的出现次数,因为平均值是指SUM除以计数(此处是行数),在END
的{{1}}块中,我们可以将它们除以并得到平均值如所须。
awk
如果您想取第6列的平均值,则尽管上面的代码中有awk 'BEGIN{sum=0;count=0}/^>/{sum+=$NF;count++} END{print "avg="sum/count}' Input_file
,也要使用$6
。
说明: :仅出于说明目的添加以下内容。
$NF