Сортировать, используя только несколько столбцов - PullRequest
2 голосов
/ 04 июня 2009

У меня есть файл с разделителями табуляции 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 для сортировки этого файла только по первым двум столбцам?

1 Ответ

5 голосов
/ 04 июня 2009

Вы должны добавить -s, чтобы получить стабильную сортировку :

sort -k 1,2 -s test.log

Со страницы руководства:

-s, --stable
       stabilize sort by disabling last-resort comparison
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...