You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修改Linux Shell脚本获取最值并显示所有对应学生?

实现方案

直接上可用的脚本,附带简单说明:

完整Shell脚本

#!/bin/bash

# 先检查目标文件是否存在
[ ! -f "notas.txt" ] && echo "错误:notas.txt 文件找不到" && exit 1

# 提取所有分数,排序去重后拿到最高、最低分
all_scores=$(cut -d';' -f2 notas.txt | sort -n | uniq)
max_score=$(echo "$all_scores" | tail -1)
min_score=$(echo "$all_scores" | head -1)

# 处理最高分学生:筛选对应行,转格式,对齐后拼接
max_list=$(grep ";$max_score$" notas.txt | sed 's/;/ /' | awk '{printf "%-6s %d", $1, $2}' | paste -sd ', ')

# 处理最低分学生,逻辑同上
min_list=$(grep ";$min_score$" notas.txt | sed 's/;/ /' | awk '{printf "%-6s %d", $1, $2}' | paste -sd ', ')

# 按要求输出
echo "Max: $max_list"
echo "Min: $min_list"

关键步骤说明

  • 文件检查:避免因文件不存在导致脚本报错
  • 分数提取:用cut拆分每行内容拿到分数,排序去重后快速定位最高、最低分
  • 学生格式化:
    • grep精准匹配对应分数的学生行
    • sed把分号换成空格,调整成"学生名 分数"的形式
    • awk的%-6s让学生名左对齐占6个字符位,保证输出整齐
    • paste把多个学生的信息用", "连成一行
  • 输出样式:完全贴合要求的格式,重复分数的学生都会显示出来

测试效果

如果notas.txt内容是:

marta;70
luis;70
pepe;5
ana;5
maria;45

运行脚本后会输出:

Max: marta 70, luis 70
Min: pepe 5, ana 5

内容的提问来源于stack exchange,提问作者A. Cedano

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 03:30:28