我希望以下 awk 脚本将 gpa 打印为浮点数。所以文件 my_course.txt 中的文本看起来像
CSC3320,SYSTEM LEVEL PROGRAMMING,3,1,A
CSC3210,ASSEMBLY LEVEL PROGRAMMING,3,1,B
它应该检查字段 4 中的数字是否为 1,如果是,则根据字段 3 时间字段 5 是否为 A、B 或 C 乘以 4、3 或 2。然后将此值添加到分子。对于分母,它只会将字段 3 的值添加到变量分母中。然后在 END 中,它将这两个数字相除并给出输出。但是,使用上面的文本,它将为上面的文本输出 3 而不是 3.5。我假设 awk 中的所有数字都是浮点数,所以这是怎么回事。
calculate(){
awk -F, '
BEGIN{printf "Your GPA is : "}
numerator = 0.0;
denominator = 0.0;
/^CSC/{
if($4=1) {
if($5=="A"){
numerator+=(4.0*$3);
denominator+=$3;
} else if ($5 == "B"){
numerator+=(3.0*$3);
denominator+=$3;
} else if ($5 == "C"){
numerator+=(2.0*$3);
denominator+=$3;
} else {
;
}
}
}
END{print(numerator/denominator)}
' my_course.txt
}
使用
END{printf "%g", (numerator/denominator)}
打印 3
END{printg "%f", (numerator/denominator)}
打印 3.000000