Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unix 仅使用某些列进行排序_Unix_Sorting - Fatal编程技术网

Unix 仅使用某些列进行排序

Unix 仅使用某些列进行排序,unix,sorting,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

我有一个以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 12440727687234 b 1244072768 7234 r 1244072768 7234 a 12440727687341 C 1244072768 7341 a 1244072768 7234 - 1244072768 7341 r 12440727687341吨 1244072768 7341 - 12440727694237 W 12440727694237A 12440727694237 s 12440727694237小时 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 - 1244072768 7234 Z 1244072768 7234 e 12440727687234 b 1244072768 7234 r 1244072768 7234 a 1244072768 7234 - 12440727687341 C 1244072768 7341 a 1244072768 7341 r 12440727687341吨 1244072768 7341 - 12440727694237 W 12440727694237A 12440727694237 s 12440727694237小时 1244072769 4237 -
我尝试了
sort-k1n-k2n test.log
sort-k1-k2 test.log
排序-k1,2test.log
并按整行对它们进行排序。是否有任何方法可以使用标准linux/unix命令行工具仅按前两列对该文件进行排序?

您应该添加
-s
以获得:

从手册页:

-s, --stable stabilize sort by disabling last-resort comparison -s、 --稳定的 通过禁用最后的比较来稳定排序
为了解释文件为何处于这种复杂的模式,我有几个进程都在向文件写入多行消息。因此,有时两个进程会重叠并混合其消息。第一列是Unix时间戳,第二列是进程ID。我需要将同一进程在同一秒内编写的所有消息分组在一起,并且最后的“-”行始终是最后一行。谢谢,这正是我所需要的,我发现的示例从未包含该标志 -s, --stable stabilize sort by disabling last-resort comparison