编写awk程序,实现成绩统计报表。
时间: 2023-07-12 20:14:26 浏览: 66
假设我们有一个成绩文件 scores.txt,格式如下:
```
张三 语文 90
张三 数学 85
张三 英语 95
李四 语文 80
李四 数学 90
李四 英语 75
```
我们可以使用 awk 来实现成绩统计报表,代码如下:
```shell
awk '
BEGIN {
printf("%-10s%-10s%-10s%-10s\n", "姓名", "语文", "数学", "英语")
printf("----------------------------------\n")
}
{
name = $1
subject = $2
score = $3
total[name][subject] += score
count[name][subject]++
}
END {
for (name in total) {
printf("%-10s", name)
for (subject in total[name]) {
avg = total[name][subject] / count[name][subject]
printf("%-10.2f", avg)
}
printf("\n")
}
}' scores.txt
```
解释一下代码:
1. 在 BEGIN 中,我们先打印表头,使用 printf 函数格式化输出。
2. 在处理每一行数据时,我们先将姓名、科目和成绩分别保存到变量中。
3. 然后,我们使用数组 total 和 count 分别保存每个人每门科目的总成绩和个数。
4. 在 END 中,我们遍历数组 total,计算每个人每门科目的平均成绩,并输出到标准输出。
运行上述代码,输出结果如下:
```
姓名 语文 数学 英语
----------------------------------
张三 90.00 85.00 95.00
李四 80.00 90.00 75.00
```
这样,我们就实现了一个简单的成绩统计报表。