使用awk计算成绩的平均值

phi*_*mos 1 unix linux bash awk command

我有这样一个文件:

id1 name1 grade1 grade2 grade3....gradeN
id2 name2 grade1 grade2 grade3....gradeN
etc
Run Code Online (Sandbox Code Playgroud)

我想用awk打印每行的id,名称和等级平均值.任何的想法?输出应该像:

id1 name1 avg_of_grades
id2 name2 avg_of_grades
Run Code Online (Sandbox Code Playgroud)

jay*_*ngh 5

使用awk:

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

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

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

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