使用awk计算成绩的平均值

时间:2014-09-09 16:26:06

标签: linux bash unix awk command

我有一个这样的文件:

id1 name1 grade1 grade2 grade3....gradeN
id2 name2 grade1 grade2 grade3....gradeN
etc

我希望使用awk打印每行的ID,名称和等级平均值。 任何的想法? 输出应该是:

id1 name1 avg_of_grades
id2 name2 avg_of_grades

1 个答案:

答案 0 :(得分:5)

使用awk

awk '{sum=0;for(i=3;i<=NF;i++) sum+=$i; print $1, $2, (NF>2?sum/(NF-2):0)}' file

从第三列迭代到行尾,并在名为sum的变量中捕获总数。完成后,只需打印第1,2列和平均值。由于sum将包含滚动总计,因此我们会在脚本开头将其设置为0,以便为每行初始化它。

请注意,对于平均值,我使用NF变量,其中包含每行的总列数。我们减去2得到正确的总数(我们从第三列开始捕获)。

另外,在你只有两列的情况下,我添加了一个除零的检查。