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

如何优化awk输出可读性?实现指定高低分输出格式

修改AWK代码实现指定输出格式

现有AWK代码用于筛选分数最高和最低的学生,但输出格式不够直观,需要调整为更清晰的样式。

现有代码

awk -F ';' 'NR==1 { min = max = $2; mina = maxa = $1 " " $2; next }
$2==max { maxa = maxa ", " $1 " " $2 }
$2==min { mina = mina ", " $1 " " $2 }
$2>max { max = $2; maxa = $1 " " $2 }
$2<min { min = $2; mina = $1 " " $2 }
END { print "Max:", maxa
  print "Min:", mina }' notas.txt

输入文件(notas.txt)内容

pepe;5
marcos;7
marta;70
luis;70
ana;5
pedro;9
paco;70
pepa;7
rosa;5
manu;8

当前输出

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

期望输出

Max: 70 [marta,luis,paco]
Min:  5 [pepe,ana,rosa]

修改后的代码

awk -F ';' 'NR==1 { 
    min = max = $2; 
    max_names = $1; 
    min_names = $1; 
    next 
}
$2 == max { max_names = max_names "," $1 }
$2 == min { min_names = min_names "," $1 }
$2 > max { 
    max = $2; 
    max_names = $1 
}
$2 < min { 
    min = $2; 
    min_names = $1 
}
END { 
    printf "Max: %d [%s]\n", max, max_names;
    printf "Min: %2d [%s]\n", min, min_names;
}' notas.txt

代码修改说明

  • 拆分存储逻辑:分别维护最高分/最低分的数值,以及对应的学生名字列表,不再重复存储分数信息
  • 遇到同分数学生时,仅追加名字而非重复分数内容
  • 用printf实现精准格式化:先输出分数,再用方括号包裹名字列表;最低分通过%2d实现与最高分的对齐效果

内容的提问来源于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 04:52:18