【问题标题】:sort pipe delimited file with empty columns对带有空列的管道分隔文件进行排序
【发布时间】:2014-12-19 16:40:38
【问题描述】:

我在使用排序时遇到了问题,我认为这是由于我要排序的列之前有一个空列。我对文件sort -n -t'|' -k4 testme -o testedsort 进行了排序,这是测试排序的输出

N|N||+006422931|+000359029|OVERLAY 
N|N|A|+000000020|+000000000|580    
N|N|A|+000000020|+000000020|705    
N|N|A|+000008035|+000000000|800    
N|N|A|+000009701|+000000000|723    
N|N|A.|+000009701|+001569434|742   
N|N|A|+000009701|+001569434|742    
N|N|A|+000013723|+000000000|DLORGN 
N|N|A|+000020963|+000000020|729    
N|N|A|+000022110|+004066830|GRANT  

似乎除了第一条记录外,一切都很好,唯一奇怪的是我们有一个空列。有没有人看到这个并且有任何关于如何解决这个问题的建议?

【问题讨论】:

    标签: linux sorting unix


    【解决方案1】:

    两件事要解决

    1. 假设您只想按第四个字段排序,请将排序键指定为-k4,4
    2. 要处理前导 + 登录数字,请使用 -g 而不是 -n(可能是 GNU sort-specific)

      sort -k4,4g -t'|' testme -o testedsort
      

    【讨论】:

    • 看来 -n 可以很好地处理加号。我会尝试 -k4,4 但我想知道 ,4 是什么意思?
    • 好吧,我该死,问题出在 -n 上,我把它改成使用 -g 并且它起作用了。
    • @Serge,它对你有用!您需要通过-k 传递键开始和键结束位置。在执行-k4 时,您只传递了键开始,这意味着sort 将行的其余部分视为键。可能对数字排序不重要,因为sort 会在遇到第一个非数字字符(在这种情况下为|)时结束键,但值得采用作为最佳实践
    猜你喜欢
    • 1970-01-01
    • 2023-03-05
    • 2014-04-14
    • 1970-01-01
    • 2010-11-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-17
    相关资源
    最近更新 更多