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"
}