例如,我有一个包含2列的文本文件:
0.000000e+00 0.000000e+00
1.958870e-02 1.566242e-02
3.923750e-02 6.509739e-03
4.394830e-01 3.216723e-03
4.594830e-01 2.508868e-03
4.794890e-01 3.813512e-04
4.995070e-01 8.846235e-04
5.997070e-01 1.671057e-03
我想在第2列中找到最大值,它显示输出中第1列的相应值。
答案 0 :(得分:1)
这个awk one-liner将在没有排序的情况下完成:
awk '$2>m{f=$1;m=$2}END{print f}' file
输出:
1.958870e-02
答案 1 :(得分:0)
我只是在测试@jeanrjc刚发布的完全相同的解决方案 - 我想,如果我理解你的问题,这是正确的答案(获得MAX行):
sort -n -k2 file.dat | tail -1
答案 2 :(得分:0)
如果您使用1e-2
表示法,则需要使用-g
选项进行排序:
Max:
sort -k2g file.dat | tail -1
Min:
sort -k2gr file.dat | tail -1
-k2
代表第2栏-r
(或-k2r
)用于反向订单如果您有标题,可以使用awk删除它:
awk 'NR>1' file.dat | sort -k2g | tail -1
您也可以使用head
代替tail
来获得相反的结果,例如:
sort -k2g file.dat | head -1
会给你分钟
希望这有帮助。