awk bash 平均计算在文件中



编写 unix 命令以显示每个科目分数超过 50 且平均分大于或等于 75 的所有学生的卷、姓名和平均值。

平均值可以计算为 (subj_1+subj_2(/2。

输入:

roll ,name,subScore1,subScore2
123,a,88,78
101,b,76,90
812,c,78,98

输出:

123 a 83
812 c 78

我的代码:

awk 'BEGIN {FS=',';OFS=' '} {if(NR>1 (&& $3>50 && $4>50) && ($3+$4)/2 >= 75){print $1,$2,($3+$4)/2}}' input_file

我不知道为什么我会收到错误。 请帮助伙计们。

编辑: 添加更通用的解决方案,其中 OP 的Input_file可能具有 4 个以上的字段/列,在这种情况下可以尝试以下操作。

awk '
BEGIN{
FS=","
}
FNR==1{
next
}
{
for(i=3;i<=NF;i++){
if($i>=50){
++count
}
sum+=$i
}
avg=(sum/count)
if(count==(NF-2) && avg>=75){
print $1,$2,avg
}
count=sum=avg=0
}
'   Input_file


您能否尝试以下操作,使用GNUawk显示的示例进行编写和测试。

awk '
BEGIN{
FS=","
}
FNR==1{
next
}
avg=($3+$4)/2
avg>=75 && ($3>=50 && $4>=50){
print $1,$2,avg
}
'  Input_file

最新更新