仅使用一些列进行排序

时间:2009-06-03 23:14:43

标签: unix sorting

我有一个600MB制表符分隔文件,需要仅使用前两列进行排序。这些列按顺序排列的所有行都应保留在现有顺序中。我使用sort--key的努力似乎一直在按其他列排序。

这是未分类文件的示例:

1244072768  7234    Z
1244072768  7234    e
1244072768  7234    b
1244072768  7234    r
1244072768  7234    a
1244072768  7341    C
1244072768  7341    a
1244072768  7234    -
1244072768  7341    r
1244072768  7341    t
1244072768  7341    -
1244072769  4237    W
1244072769  4237    a
1244072769  4237    s
1244072769  4237    h
1244072769  4237    -

结果应该是这样的:

1244072768  7234    Z
1244072768  7234    e
1244072768  7234    b
1244072768  7234    r
1244072768  7234    a
1244072768  7234    -
1244072768  7341    C
1244072768  7341    a
1244072768  7341    r
1244072768  7341    t
1244072768  7341    -
1244072769  4237    W
1244072769  4237    a
1244072769  4237    s
1244072769  4237    h
1244072769  4237    -

我尝试了sort -k 1n -k 2n test.log;sort -k 1 -k 2 test.log;sort -k 1,2 test.log;,所有这些都按整行排序。有没有办法使用标准的linux / unix命令行工具只按前两列对此文件进行排序?

1 个答案:

答案 0 :(得分:5)

您应该添加-s以获得stable sort

sort -k 1,2 -s test.log

从手册页:

-s, --stable
       stabilize sort by disabling last-resort comparison