Awk 如何打印脚本,以便在数据文件中显示每个学生的计算加权分数

Awk 如何打印脚本,以便在数据文件中显示每个学生的计算加权分数,awk,Awk,如何打印脚本,以便在数据文件中显示每个学生的计算加权分数? 下面我已经格式化了我的脚本,除了打印方面 BEGIN { FS="," } $4~/[0-9]/ { EARN[STUDENT$2]+=$4 POSSIBLE[STUDENT$2]+=$5 STUDENTS[STUDENT]++ CATEGORIES[$2]++ } END { # for (ASSIGNMENT in EARN) { # print A

如何打印脚本,以便在数据文件中显示每个学生的计算加权分数? 下面我已经格式化了我的脚本,除了打印方面

BEGIN {
    FS=","
}

$4~/[0-9]/ {

    EARN[STUDENT$2]+=$4
    POSSIBLE[STUDENT$2]+=$5
    STUDENTS[STUDENT]++
    CATEGORIES[$2]++
}
END {
 #      for (ASSIGNMENT in EARN) {
  #             print ASSIGNMENT,EARN[ASSIGNMENT]/POSSIBLE[ASSIGNMENT]
  #     }
    for (STUDENT in STUDENTS) {
           Homework=(EARN[STUDENT"Homework"]/POSSIBLE[STUDENT"Homework"])*0.10
           Lab=(EARN[STUDENT"Lab"])*0.30
           Quiz=(EARN[STUDENT"Quiz"]/POSSIBLE[STUDENT"Quiz"])*0.20
           Total=HOMEWORK+LAB+QUIZ
            LETTER="A"
            }
            if (TOTAL <= 90) {
                    LETTER="B"
            }
            if (LETTER <= 80) {
                    LETTER="C"
            }
            if (LETTER <= 70) {
                    LETTER="D"
            }
            if (LETTER <= 60){
                    LETTER="E"
            }

}
开始{
FS=“,”
}
$4~/[0-9]/ {
赚取[学生2美元]+=4美元
可能[STUDENT$2]+=$5
学生[学生]++
类别[$2]++
}
结束{
#for(在EARN中分配){
#打印作业,赚取[作业]/可能的[作业]
#     }
对于(学生中的学生){
家庭作业=(赚取[学生“家庭作业])/可能[学生“家庭作业])*0.10
实验室=(赚取[学生实验室])*0.30
测验=(赚取[学生测验]/可能[学生测验]*0.20
总计=家庭作业+实验室+测验
字母=“A”
}

if(TOTAL看起来您正在运行一个
awk
代码。由于您没有显示任何示例,因此仅通过查看您的代码,我对代码进行了编辑。在代码中最后一次出现
}
之前添加了一行(请参阅此代码的最后第二行)这将创建一个名为
output\u file
的输出文件(您也可以根据需要进行更改)

开始{
FS=“,”
}
$4~/[0-9]/ {
赚取[学生2美元]+=4美元
可能[STUDENT$2]+=$5
学生[学生]++
类别[$2]++
}
结束{
#for(在EARN中分配){
#打印作业,赚取[作业]/可能的[作业]
#     }
对于(学生中的学生){
家庭作业=(赚取[学生“家庭作业])/可能[学生“家庭作业])*0.10
实验室=(赚取[学生实验室])*0.30
测验=(赚取[学生测验]/可能[学生测验]*0.20
总计=家庭作业+实验室+测验
字母=“A”
}

if(TOTAL)这非常相似,不确定是否相同,因为没有样本:@JamesBrown,woww内存很好,我真的忘记了答案,如果OP确认此链接有助于OP,我将删除我的答案并关闭此问题,因为dup也是干杯。不要使用所有大写变量名,以免与内置变量名发生冲突(因此,人们在阅读您的代码时不会感到头痛!)请提供输入数据的样本。不要在评论中添加信息,你的问题包括所有相关信息,包括简明、可测试的样本输入和预期输出。由于你没有提供足够的信息让人们能够帮助你而关闭,不要让同样的情况发生在这个问题上。看看是否不是这样清楚。Andrew 75.21 C Chelsey 92.21 A Shane 77.64 C Ava 79.76 C Sam 62.34 D这应该是我的输出。@Alex,很抱歉您的帖子不清楚,因为没有提供样本。正如Ed先生已经提到的,您需要在您的问题中清楚地发布样本。因为您只要求将输出放入输出文件,所以我添加了pa仅限代码的rt。
BEGIN {
    FS=","
}

$4~/[0-9]/ {

    EARN[STUDENT$2]+=$4
    POSSIBLE[STUDENT$2]+=$5
    STUDENTS[STUDENT]++
    CATEGORIES[$2]++
}
END {
 #      for (ASSIGNMENT in EARN) {
  #             print ASSIGNMENT,EARN[ASSIGNMENT]/POSSIBLE[ASSIGNMENT]
  #     }
    for (STUDENT in STUDENTS) {
           Homework=(EARN[STUDENT"Homework"]/POSSIBLE[STUDENT"Homework"])*0.10
           Lab=(EARN[STUDENT"Lab"])*0.30
           Quiz=(EARN[STUDENT"Quiz"]/POSSIBLE[STUDENT"Quiz"])*0.20
           Total=HOMEWORK+LAB+QUIZ
            LETTER="A"
            }
            if (TOTAL <= 90) {
                    LETTER="B"
            }
            if (LETTER <= 80) {
                    LETTER="C"
            }
            if (LETTER <= 70) {
                    LETTER="D"
            }
            if (LETTER <= 60){
                    LETTER="E"
            }
            print STUDENT OFS LETTER > "output_file"
}