我有一个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命令行工具只按前两列对此文件进行排序?
答案 0 :(得分:5)
您应该添加-s
以获得stable sort:
sort -k 1,2 -s test.log
从手册页:
-s, --stable stabilize sort by disabling last-resort comparison