使用 awk 命令
- 使用 grades.txt 文件打印出每个学生的姓名和姓氏 计算/打印他们当前的百分比分数(假设相等 每个作业的权重)。
成绩.txt文件
FN LN Lab HW1 HW2 HW3 HW4
Ryan Slaven 1 1 0 1 1
Jephthah Eustathios 0 1 0 1 0
Andreas Saša 1 0 1 0 1
Godofredo Gerard 1 1 1 1 1
Edwin Babur 1 0 1 1 1
Ahmad Marin 0 0 0 0 0
Jett Marko 1 1 0 1 1
我的答案是:
awk '{sum=0;for(i=3;i<=NF;i++) sum+=$i; print $1, $2, (NF>2?sum/(NF-2):0)*100}' grades.txt
但是,对于 FN 和 LN 旁边的输出,它显示 0。我如何删除 0,或使其显示为“平均”?或者,我该如何删除该行?
另外,请问有没有更好的解题方法?
最佳答案
$ awk '{print $1, $2, (NR>1 ? 100*gsub(1,1)/(NF-2) : "Average")}' file
FN LN Average
Ryan Slaven 80
Jephthah Eustathios 40
Andreas Saša 60
Godofredo Gerard 100
Edwin Babur 80
Ahmad Marin 0
Jett Marko 80
关于linux - 使用 awk 计算并打印每行的平均分数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39340333/