【问题标题】:How to sort text file based on number after first letter如何根据第一个字母后的数字对文本文件进行排序
【发布时间】:2021-11-21 12:19:19
【问题描述】:

我在 linux 中有一个如下所示的文本文件:

H-988   -0.5418829321861267 no
H-989   -0.5033702254295349 yes
H-990   -1.1516857147216797 hi
H-99    -0.5005123019218445 hello

我想根据连字符后的数字对该文件进行排序。所以顺序应该是:

H-99    -0.5005123019218445 hello
H-988   -0.5418829321861267 no
H-989   -0.5033702254295349 yes
H-990   -1.1516857147216797 hi

我尝试了 grep sort 命令,但它不起作用。例如,它将 95 放在 949 之后,而不是之前提供的示例中的 99 和 990 相同

【问题讨论】:

    标签: linux sorting grep


    【解决方案1】:

    你应该按数字排序,

    sort --numeric-sort --field-separator "-" --key 2 some.txt
    

    或更短的版本

    sort -n -t "-" -k 2 some.txt
    

    【讨论】:

      【解决方案2】:

      如果第一个字段的数字前总是只有两个字符,您可以跳过它们:

      sort -k1.3,1n ip.txt
      

      -k1.3 告诉sort 仅从第三个字符开始考虑字段(此处为1

      【讨论】:

        猜你喜欢
        • 2020-05-21
        • 1970-01-01
        • 2014-06-26
        • 2016-07-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-12-15
        • 2020-08-21
        相关资源
        最近更新 更多