怎么编写awk脚本s01-grade.awk
时间: 2023-11-15 09:01:32 浏览: 163
awk是一种文本处理工具,可以用来处理文本文件中的数据。s01-grade.awk是一个awk脚本,用于计算学生成绩的平均分和总分。
下面是s01-grade.awk的代码:
```
#!/usr/bin/awk -f
BEGIN {
FS = ","
printf "%-10s%-10s%-10s%-10s\n", "Name", "Math", "English", "Total"
}
{
total = $2 + $3
avg = total / 2
printf "%-10s%-10d%-10d%-10d\n", $1, $2, $3, total
sum += total
}
END {
printf "Average: %.2f\n", sum / NR
}
```
这个脚本首先设置了输入文件的字段分隔符为逗号,然后输出表头,接着对每一行进行处理,计算总分和平均分,并输出每个学生的成绩信息。最后,在文件处理结束时输出所有学生的平均分。
你可以通过以下命令来运行这个脚本:
```
awk -f s01-grade.awk input.txt
```
其中,input.txt是包含学生成绩信息的文本文件。
相关问题
请编写awk脚本a01-grade.awk进行统计: (1)每位同学的平均分及等级(A,B,C,D,F)
当然可以。在AWK脚本中,你可以使用它强大的文本处理能力来计算每位同学的平均分数并分配等级。假设你的数据存储在一个名为`scores.txt`的文件里,每行包含学生姓名和各科成绩,格式如下:
```
张三 95 88 92
李四 80 76 84
王五 98 93 96
...
```
你可以创建一个简单的`a01-grade.awk`脚本来完成这个任务。这里是一个基本的脚本示例:
```awk
#!/usr/bin/awk -f
# 定义变量
BEGIN { FS = " " } # 分割符设置为空格
NR > 1 { # 跳过表头
total += $2 + $3 + $4 # 总分累加
count++ # 学生数计数
}
END {
avg = total / count # 平均分计算
if (avg >= 90) grade = "A"
else if (avg >= 80 && avg < 90) grade = "B"
else if (avg >= 70 && avg < 80) grade = "C"
else if (avg >= 60 && avg < 70) grade = "D"
else grade = "F" # F等级范围
print "学生姓名:", $1 ", 平均分:", avg ", 等级:", grade
}
# 根据学生的总分判断等级并打印结果
{
printf "%s %d %d %d | 平均分:%d 等级:%s\n", $0, $2, $3, $4, avg, grade
}
```
运行此脚本:
```bash
awk -f a01-grade.awk scores.txt
```
这将输出每个学生的平均分和对应的字母等级。
阅读全文