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