【问题标题】:Getting a row whose specific given column has max value in bash script在bash脚本中获取特定给定列具有最大值的行
【发布时间】:2023-03-08 19:05:01
【问题描述】:

我的文件为(间距可能不规则)

a  34 4
b 34 5
c 4  123
d 100   34
e 1  23

现在如何根据列获取具有最大值的行,例如使用 bash 脚本的第二列。 输出应该是:

d 100   34

【问题讨论】:

    标签: linux bash shell awk


    【解决方案1】:

    即使您的所有键值都是负数,这也会起作用,并且如果您的输入文件为空,则不会打印空行:

    $ awk '(NR==1) || ($2 > max){max=$2; rec=$0} END{if (NR) print rec}' file
    d 100   34
    

    【讨论】:

      【解决方案2】:

      你可以使用这个 awk:

      awk '$2 > max{max=$2; r=$0} END{print r}' file
      
      d 100   34
      

      【讨论】:

        【解决方案3】:

        awk 的替代方案:

        sort -k2nr file | head -1
        

        【讨论】:

          猜你喜欢
          • 2014-06-11
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-12-27
          • 1970-01-01
          • 1970-01-01
          • 2018-10-12
          • 2022-11-04
          相关资源
          最近更新 更多