awk的for循环得到平均数

要求:得到此文件中每个人的成绩平均数

cat achievement.txt 
waiwai 90 98 98 96 96 92
xiaoyu 70 77 85 83 70 89
gege   85 92 78 94 88 91
xingxing 89 90 85 94 90 95
bingbing 84 88 80 92 84 82
dandan 64 80 60 60 61 62
[root@m01 scripts]# awk '{sum=0;for(i=2;i<=NF;i++)sum=sum+$i;print$1,sum/6}' chengji.txt 
waiwai 95
xiaoyu 79
gege 88
xingxing 90.5
bingbing 85
dandan 64.5

步骤详解:


awk  '{
sum=0;  #设置初始值
for(i=2;i<=NF;i++)  #i=2:从第二列计算, NF:方便以后计算
    sum+=$i;  #取列 所以是$i
print $1,sum/(NF-1) 
}' achievement.txt

你可能感兴趣的:(shell基础)