Bash(awk) - 从数字行中获取平均值

时间:2014-03-23 18:21:03

标签: awk

我要做一个bash程序,它会读取一个名字,存储它,然后读取分数以查找平均值是否高于60.如果是,请打印出他们的名字。所以文件看起来像这样

tim 50 60 70
roy 90 80 90

该程序应该只打印出#ro;"因为他是唯一一个成绩合格的人。这就是我得到的。我只是不确定在哪里放置像;,{}和(),所以我确定我的代码是可怕的:

#!/bin/bash
awk '{name=$i}
{avg=0}
{
  count=0;
  for(i=2;i<=NF;i++)
    avg+=$i
  count++;
}
avg=avg/count {
  if(avg >= 60) 
    printf("%s ", name)
}'

令人惊讶的是,它编译时没有任何错误,但没有任何打印。

1 个答案:

答案 0 :(得分:3)

你快到了那里:

awk '{
  name=$1
  tot=0
  for(i=2;i<=NF;i++)
    tot+=$i
  if(tot/(NF-1)>60)
    print name
  }' yourfile