jon,doe 5 5
sam,smith 10 5
我需要计算行和平均值的平均值柱。所以输入文件基本上包含name score1和score2,我需要从文件中读取内容,然后按行和列方式计算平均值。我得到了理想的结果,但是由于空白区域我还有一个'0'
,如果有人可以提供帮助我会很感激。
awk 'BEGIN {print "name\tScore1\tScore2\tAverage"} {s+=$2} {k+=$3} {print $1,"\t",$2,"\t",$3,"\t",($2+$3)/2} END {print "Average", s/2,k/2}' input.txt
这是我得到的输出 -
name Score1 Score2 Average
jon,doe 5 5 5
sam,smith 10 5 7.5
0
Average 7.5 5
答案 0 :(得分:2)
您的输入文件中看起来有一个额外的空白或空白(全空白)行。
添加NF==0 {next}
作为第一个模式 - 动作对将跳过所有空行或空行并给出所需的结果。
NF==0
仅在输入行中未找到任何字段(数据)时才匹配
next
语句跳过当前输入行(记录)的剩余语句,并继续处理下一行(记录)。
awk 'BEGIN {print "name\tScore1\tScore2\tAverage"} NF==0 {next} {s+=$2} {k+=$3} {print $1,"\t",$2,"\t",$3,"\t",($2+$3)/2} END {print "Average", s/2,k/2}' input.txt