Как выполнить сортировку по двум полям (одно числовое, одна строка) одновременно с помощью встроенной программы «сортировка»? - PullRequest
16 голосов
/ 05 марта 2011

У меня есть файл, скажем, "bigfile", с табличными данными следующей формы:

a1 b2 a3 1
b1 a2 c3 0
... и так далее.

Я хочу использовать встроенную программу «сортировки» на моей машине с Linux, поэтому сортируйте этот файл по четвертому полю (числовому), а затем по первому полю одновременно.Я пару раз просматривал справочные страницы, и все, что я мог придумать, было:

sort -n -k4,4 -k1,1 bigfile

Есть ли способ заставить "sort" делать то, что я хочу, или мне нужно написать собственную программу?

Спасибо.

1 Ответ

30 голосов
/ 05 марта 2011

С справочной страницы:

POS - это F [.C] [OPTS], где F - это номер поля и C символа положение в поле; оба происхождения 1. Если ни -t, ни -b не действуют, символы в поле считаются от начало предыдущего пробельные. ОПТС один или несколько однобуквенные варианты заказа, которые переопределяют параметры глобального порядка для этого ключа. Если ключ не указан, используйте вся строка в качестве ключа.

sort -k4,4n -k1,1 bigfile должен это сделать.

Другой вариант будет sort -k1,1 bigfile | sort --stable -n -k4,4 Стабильная сортировка означает, что связи в 4-м поле разрешаются исходной позицией, которая устанавливается первым проходом сортировки как первое поле.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...