2009-06-03 4 views
2

У меня есть файл с разделителями табуляции размером 600 МБ, который нужно сортировать, используя только первые два столбца. Любые строки, уже упорядоченные этими столбцами, должны оставаться в существующем порядке. Мои попытки с использованием 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

Чтобы объяснить, почему этот файл находится в этой запутанной модели, у меня есть несколько процессов, все писать многострочный сообщения в файл. Из-за этого иногда два процесса перекрываются и смешивают свои сообщения. Первый столбец - это временная метка Unix, а вторая - идентификатор процесса. Мне нужны все сообщения, написанные одним и тем же процессом в одной и той же группе, и окончательная строка «-» всегда будет последней. – Rob

ответ

5

Вы должны добавить -s получить stable sort:

sort -k 1,2 -s test.log 

из страницы:

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

Спасибо, именно то, что мне было нужно, примеры, которые я нашел, никогда не включали этот флаг – Rob

Смежные вопросы