仅使用一些列进行排序

Rob*_*Rob 2 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命令行工具来排序前两列的这个文件?

sth*_*sth 5

你应该添加-s以获得稳定的排序:

sort -k 1,2 -s test.log
Run Code Online (Sandbox Code Playgroud)

从手册页:

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