【问题标题】:sort by two fields not behaving right按行为不正确的两个字段排序
【发布时间】:2014-06-25 03:36:33
【问题描述】:

首先,我已经阅读了语言环境对排序的影响,我相信我的错误不受这些影响。

我正在尝试按格式对数据进行排序

8hjk.apple
5ykh.orange
6faq.pear

首先按第二个字段(水果),然后按第一个字段的字母。我做了很多尝试,其中大部分会按水果排序,但不会按第一个字段。

sort -t "." -k 2,2  -k1.2,1.3  

我检查过的所有内容都告诉我这是正确的方法,但它仍然不起作用。

【问题讨论】:

    标签: bash sorting csv gnu delimiter


    【解决方案1】:

    试试这个方法

    sort -t. -k2,2 -k1,1 < file.txt
    

    其中-k2,2 表示使用#2 到#2 的字段,即仅使用第二个字段。

    【讨论】:

    • 感谢您的回复!我已经尝试过,但它仍然不想表现出来!
    • 这样做会导致它按第三个字段排序,作为 .是必不可少的分隔符。
    • @Aiden,你介意再试一次。编辑了答案。我无法对其进行测试,但据我所知,它应该可以正常工作。
    • @Aiden,这很奇怪!你确定没有前导空格吗?
    • @Rahul...积极!为了安全起见,我也尝试使用 -b 运行它。稍后我将不得不在我的云工作区上尝试...可能是系统错误。谢谢你的帮助!非常感谢您的宝贵时间!
    【解决方案2】:

    您的命令有效,只是您没有给它足够的输入来查看它是否有效。更多数据:

    sort -t. -k2,2 -k1.2,1.4  <<END
    1ykh.orange
    2ded.apple
    3mno.orange
    4bcd.apple
    5faq.pear
    6mnk.orange
    END
    
    4bcd.apple
    2ded.apple
    6mnk.orange
    3mno.orange
    1ykh.orange
    5faq.pear
    

    【讨论】:

    • 它对我不起作用:(这是输出示例1A27.vegfr2_decoys*2334 -10 1CX2.vegfr2_decoys*2334 -3.8 2JEY.vegfr2_decoys*2334 -5.8 1HWK.vegfr2_decoys*2334 -6.7 1TGM.vegfr2_decoys*2334 -6.5 1VRT.vegfr2_decoys*2334 -6.2 1B59.vegfr2_decoys*2334 -7.1 2F16.vegfr2_decoys*2334 -7.9 2HT8.vegfr2_decoys*2334 -7.3 3MHJ.vegfr2_decoys*2334 -7 1X70.vegfr2_decoys*2334 -7.2 抱歉,我无法正确换行。但它按第二个字段排序(有数千个截断的结果) ,但第一个字段值似乎是随机的
    • 你有什么版本的sort
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-11-01
    • 1970-01-01
    • 2019-03-19
    • 1970-01-01
    • 2010-12-15
    • 2011-07-09
    相关资源
    最近更新 更多