Я знаю, что опция -k для сортировки Unix позволяет нам сортировать по определенному столбцу и всем следующим . Например, учитывая входной файл:
2 3
2 2
1 2
2 1
1 1
Используя sort -n -k 1
, я получаю вывод, отсортированный по 1-му столбцу, а затем по 2-му:
1 1
1 2
2 1
2 2
2 3
Тем не менее, я хочу сохранить порядок второго столбца, например:
1 2
1 1
2 3
2 2
2 1
Возможно ли это с помощью sort
команды?
join
, чтобы входные данные были отсортированы по полям, к которым вы присоединяетесь. Так что этот вывод отсортирован по первому полю, и вы можете присоединиться к нему.-k 1,1
(Далее «1 » часть) не работает лучше для меня. Что работает-s -k 1
, с,-n
если вам это нужно.Для сортировки только по первому столбцу вы должны сделать:
Из Руководства по системному администрированию Unix и Linux
источник
-s
опцию, как указал Каскабель.-s
сказано: «Эта опция поддерживает исходный порядок записей записей с одинаковым ключом».Ни один из приведенных ответов не работает вообще для меня.
Оба
sort -s -k 2 file1
иsort -n -k1,1
делаем дополнительную сортировку с этим файлом:Я просто должен был сделать именно эту вещь и в итоге использовал цикл оболочки. Это решение может не сработать для очень большого файла, поскольку весь файл необходимо прочитать для каждого уникального значения в отсортированном столбце.
Здесь файл отсортирован только по столбцу 2.
источник
sort -s -k2,2 file1