【发布时间】:2020-04-13 02:39:49
【问题描述】:
BEGIN {
FS=","
OFS = "\t"
OFMT = "%.2f"
}
$4~/[0-9]/ {
EARN[$1$2]+=$4
POS[$1$2]+=$5
CLASS[$1]++
TYPE[$2]++
}
END{
TOTAL=0
for (STUDENT in CLASS){
HW=(EARN[$1"Homework"]/POS[$1"Homework"])*0.30
LAB=(EARN[$1"Lab"]/POS[$1"Lab"])*0.50
QUIZ=(EARN[$1"Quiz"]/POS[$1"Quiz"])*0.10
FINAL=(EARN[$1"Final"]/POS[$1"Final"])*0.10
WS=(EARN[$1"Survey"]/POS[$1"Survey"])*0.10
TOTAL=(HW+LAB+QUIZ+FINAL+WS)*100
GRADE= "A"
if (TOTAL < 90) {
GRADE="B"
}
if ( TOTAL < 80){
GRADE="C"
}
if (TOTAL < 70){
GRADE="D"
}
if( TOTAL < 60) {
GRADE="E"
}
}
print "Student\t Total \t Letter Grade"
print STUDENT, TOTAL, "\t" GRADE
}
代码 /should/ 为每个学生提供一个唯一的成绩,但是对于我的示例文件,每个学生都获得相同的成绩(我假设这是第一个学生的成绩),代码正在通过第 4 列 EARN(获得的分数)并将其与 $5 POS 列(可能的点数)进行比较
【问题讨论】:
标签: for-loop if-statement awk