如何使用bash脚本在文本文件中查找指定列最大值并提取对应关联字段
temperature.txt数据处理方案
单遍扫描实现(适合仅存在一个最大值的场景)
直接执行以下awk命令即可得到结果:
awk -F ',' 'BEGIN{max=-100000} {if($5 > max) {max = $5; res = $1","$2","$3","$4}} END{print res}' temperature.txt
命令说明:
-F ','指定字段分隔符为逗号BEGIN{max=-100000}初始化最大值变量,可根据你的实际数据范围调整初始值- 逐行扫描时对比第5列数值,大于当前最大值就同步更新最大值和对应的结果内容
- 遍历完所有行后输出最终结果
针对你提供的示例文件,运行后输出结果为:44.6498634,19.1404118,2007.05.18,04:32
多最大值场景实现(适合多个行第5列同为最大值的情况)
如果存在多行第5列数值都是最大值,需要全部输出对应信息,执行以下命令:
awk -F ',' 'NR==FNR {if($5>max) max=$5; next} $5==max {print $1","$2","$3","$4}' temperature.txt temperature.txt
命令说明:
- 第一遍扫描整个文件,先确定第5列的最大值
- 第二遍扫描文件,输出所有第5列等于最大值的行的前4个字段
内容的提问来源于stack exchange,提问作者helpmeplease
相关产品推荐
相关产品推荐

