有一个成绩文件grade.txt,里面记录了很多同学的成绩,具体如下:
id name sex chinese english math
1 cali m 80 70 60
2 rose f 90 98 97
3 tom f 50 70 60
4 jack m 99 99 68
你可以使用下面的select_grade.sh
脚本来实现这个需求。这个脚本读取grade.txt
文件,然后筛选出满足条件(english成绩大于85并且math成绩大于90)的学生的相关信息。
#!/bin/bash
# 定义文件名
filename='grade.txt'
# 检查文件是否存在
if [ ! -f "$filename" ]; then
echo "文件'$filename'不存在!"
exit 1
fi
# 输出表头
echo "name sex chinese english math"
# 读取文件并筛选出满足条件的学生
awk 'NR>1 {if ($4 > 85 && $5 > 90) print $2, $3, $4, $5, $6}' $filename
- 首先,我们定义了一个变量
filename
来存储成绩文件的名称。 - 使用
if
语句检查文件是否存在,如果不存在,则输出错误信息并退出脚本。 - 使用
echo
输出表头,这样输出的结果会更清晰。 - 使用
awk
命令读取文件并筛选出满足条件的学生。NR>1
用于跳过表头,$4 > 85 && $5 > 90
用于判断english和math成绩是否满足条件,如果满足,则使用print
输出学生的名字、性别、chinese、english和math成绩。
将上面的脚本保存到select_grade.sh
文件中,并赋予执行权限,然后运行它:
chmod +x select_grade.sh
./select_grade.sh
你将得到满足条件的学生的相关信息。