3

Предположим, у меня есть этот файл

b 10 foo
a 10 bar
a 2 bar

Я хочу отсортировать по третьему столбцу в алфавитном порядке. В случае связей, я хочу отсортировать по второму столбцу, численно. На странице руководства для программы сортировки Unix вы найдете это:

> sort -k3 -k2n a

Который дает

a 2 bar
a 10 bar
b 10 foo

Что правильно.

Теперь, что я действительно хочу, это отсортировать по первому столбцу в алфавитном порядке, а в случае связей по второму столбцу - по номерам. Кто-нибудь может объяснить мне, почему

> sort -k1 -k2n a

дает

a 10 bar
a 2 bar
b 10 foo

Что совершенно не так?

1 ответ1

2

Причина, по которой ваш пример не работает так, как вы ожидаете, заключается в том, что sort учитывает также все позиции после указанной. В вашем примере словарь -k1 сортирует строку a 10 bar тактов перед a 2 bar , и вам не нужен разрыв связи.

Вам необходимо явно указать пределы ключа сортировки, как описано на странице руководства:

   -k, --key=POS1[,POS2]
          start a key at POS1, end it at POS2 (origin 1)

Пример:

$ sort -k1,1 -k2n theFile
a 2 bar
a 10 bar
b 10 foo

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .