You need to enable JavaScript to run this app. 如何在shell脚本中获取数据集表内数值的最大值与最小值
优惠活动
大模型
产品
解决方案
定价
更多

如何在shell脚本中获取数据集表内数值的最大值与最小值

优化后的极简实现

你原有的写法存在两个可优化点:硬编码min=999在目标列最小值小于999时会返回错误结果,拼接shell变量$i的写法容易引发语法问题,推荐用-v参数把shell变量传入awk,更规范也更简洁:

单求最小值的写法

min=$(awk -F',' -v col="$i" 'NR>1{min=NR==2?$col:(min<$col?min:$col)} END{print min}' "$filename")

如果可读性优先,也可以拆成更易维护的版本:

min=$(awk -F',' -v col="$i" '
NR==2 {min=$col}
NR>2 {if($col < min) min=$col}
END {print min}' "$filename")

同时求最大最小值(仅遍历一次文件,性能最优)

如果同时需要最大值,不用跑两次awk,单次遍历即可完成:

# 执行后直接把值读入shell的min、max变量
read min max <<< $(awk -F',' -v col="$i" '
NR==2 {min=max=$col}
NR>2 {
    min = $col < min ? $col : min
    max = $col > max ? $col : max
}
END {print min, max}' "$filename")

小文件可选的管道写法

如果处理的是小体积CSV,也可以用sort组合命令实现,写法更直白:

# 最小值
min=$(tail -n +2 "$filename" | cut -d',' -f "$i" | sort -n | head -n1)
# 最大值
max=$(tail -n +2 "$filename" | cut -d',' -f "$i" | sort -n | tail -n1)

内容的提问来源于stack exchange,提问作者ojihane

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.08 11:06:02