awk NR错误,返回的总行数

时间:2018-08-30 10:43:39

标签: awk

当使用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任务获得正确的结果?谢谢

1 个答案:

答案 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