【问题标题】:reverse unix sort on non-existent field对不存在的字段进行反向 unix 排序
【发布时间】:2015-10-11 10:09:41
【问题描述】:

我有一个较大的文件,其中包含如下行:(^I 代表一个制表符,$ 行尾)

2^IElaeocarpus williamsianus^I48$
4^I$
6^I$
8^I$
10^I$
12^I$
14^IElaeocarpus hookerianus^I73$
16^IElaeocarpus kirtonii^I111$
20^I$
22^ITetratheca juncea^I66$
42^IMalagasy giant rat^I401$

我想对行进行排序,以便第三个字段(即第二个选项卡之后)中数字最高的行排在第一位,即

42^IMalagasy giant rat^I401$
16^IElaeocarpus kirtonii^I111$
14^IElaeocarpus hookerianus^I73$
22^ITetratheca juncea^I66$
2^IElaeocarpus williamsianus^I48$
4^I$
6^I$
8^I$
10^I$
12^I$
20^I$

(我不关心没有字段 3 的行的顺序)。所以我假设像下面这样的东西会起作用

sort -r -t $'\t' -k 3,3n myfile

但它没有(GNU 排序,OS X 10.9)。我觉得我很愚蠢。正确的咒语是什么?

【问题讨论】:

    标签: sorting unix command-line


    【解决方案1】:

    您需要为-k 参数添加修饰符,而不是命令行参数。 因此,这些行中的某些内容应该可以解决问题:

    sort -t $'\t' -k 3,3nr myfile
    

    【讨论】:

    • 正是我所缺少的。 谢谢
    【解决方案2】:

    看来你想要的不是n,而是g

    sort -t $'\t' test.txt -k 3.2gr
    

    点在键中指定开始比较的字符。

    正如 favouretti 指出的那样,您想要反转的是该列,因此您在此处应用修饰符。

    【讨论】:

      猜你喜欢
      • 2011-09-14
      • 1970-01-01
      • 1970-01-01
      • 2020-07-14
      • 2017-07-08
      • 1970-01-01
      • 1970-01-01
      • 2020-08-18
      • 1970-01-01
      相关资源
      最近更新 更多