【问题标题】:Bash sorting comma delimited columns numerically and then alphabeticallyBash 对逗号分隔的列进行数字排序,然后按字母顺序排序
【发布时间】:2017-09-03 15:27:34
【问题描述】:

我正在尝试首先按第三列对 3 列进行反向(降序)排序,然后按字母顺序对第一列进行排序(以打破平局)。条目以逗号分隔 (,)。

例如,我的数据集是:

y,5,50
x,10,50
z,4,100

预期输出:

z,4,100
x,10,50
y,5,50

但是我得到的输出是:

z,4,100
y,5,50
x,10,50

我正在使用:

sort -t, -k3,3 -n -r -k1,1 filename

不知道为什么这不起作用。

【问题讨论】:

    标签: bash sorting


    【解决方案1】:

    我建议将-k3,3 -n -r 替换为-k3,3nr

    sort -t, -k3,3nr -k1,1 file
    

    输出:

    z,4,100 x,10,50 y,5,50

    【讨论】:

      【解决方案2】:

      您的建议不起作用的原因是因为您已在全局范围内应用了标志-n-r,因此字母排序也是-reversed。要基于每个键应用标志,请使用:

      sort -t, -k3,3nr -k1,1 filename
      

      这给出了预期的输出:

      z,4,100  
      x,10,50  
      y,5,50
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-02-07
        • 1970-01-01
        • 2019-04-21
        • 1970-01-01
        • 2020-09-03
        • 2021-12-28
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多