如何选取第二列或第三列中含最大值的行?
如何选取第二列或第三列含最大值的行?
以下是针对该需求的具体实现方案,以awk脚本为例,可直接处理CSV格式的文本行:
BEGIN { FS = "," } { val = ($2 > $3) ? $2 : $3 if (val > max) max = val rows[NR] = $0 row_vals[NR] = val } END { for (i=1; i<=NR; i++) { if (row_vals[i] == max) { print rows[i] } } }
脚本逻辑说明
- 初始化:设置字段分隔符为逗号,适配CSV格式
- 逐行处理:
- 提取当前行第二、三列的较大值
- 实时更新全局最大值
- 缓存每行内容及对应列的较大值
- 结果输出:遍历所有行,输出列中较大值等于全局最大值的行
场景验证
场景一:最大值30位于第三行,返回第三行
输入:
A, 1, 10 B, 2, 11 C, 30, 12
执行脚本后输出:
C, 30, 12
场景二:最大值位于第二行,返回第二行
输入:
A, 1, 10 B, 2, 31 C, 30, 12
执行脚本后输出:
B, 2, 31
场景三:最大值同时出现在第二行和第三行,返回这两行
输入:
A, 1, 10 B, 2, 31 C, 31, 12
执行脚本后输出:
B, 2, 31 C, 31, 12
内容的提问来源于stack exchange,提问作者user17135505
相关产品推荐
相关产品推荐

