从包含两列和多行的文本文件中查找最大数字

时间:2014-09-09 08:50:15

标签: bash

例如,我有一个包含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列的相应值。

3 个答案:

答案 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 

会给你分钟

希望这有帮助。