Смущено о GNU `Сортировка (1)` числового подпада
-
05-10-2019 - |
Вопрос
Я хочу отсортировать пространство разделенное table
, с численным значением, которое найдено на 2-м поле. Я могу предположить, что 2-е поле всегда ловят, но длина n неизвестна:
antiq. foo11 girls
colleaguing foo2 Leinsdorf
Cousy foo0 Montgomeryville
bowlegged foo1 pollack
Chevrier foo10 ill-conceived
candlebomb foo3 seventieths
autochthony foo101 re-enable
beneficiate foo100 osteometric
Я читаю man sort(1)
и играл со всеми вариантами. На мою систему я нашел линию:
sort -n -k2.5 table
работать.
Мой вопрос есть Зачем?
По словам мужчины страницы:
-k, --key=POS1[,POS2]
start a key at POS1, end it at POS 2 (origin 1)
...
POS is F[.C][OPTS], where F is the field number and C the characterposition in the
field. OPTS is one or more single-letter ordering options, which override global
ordering options for that key. If no key is given, use the entire line as the key.
Так почему sort -n -k2.4
Таблица не работают и sort -n -k2.5
делает?
Решение 2
Ответ: ведущие пространства (ы) считаются частью поля, пока не:
sort -b -n -k2.4 table
или любопытно:
LC_ALL=C sort -t" " -n -k2.4 table
Это также дает правильный результат.
... и еще кое-что ...
Кажется, что лучше использовать:
sort -b -n -k2.4,2 table
и, таким образом, ограничивайте сортировку до конца 2-го поля.
Другие советы
Я не знаю, поможет ли это, но Информация сортирует утверждают следующее:
Сортировка -T: -k 2,2n -k 5,3,5.4
Note that if you had written `-k 2' instead of `-k 2,2' `sort' would have used all characters beginning in the second field and extending to the end of the line as the primary _numeric_ key. For the large majority of applications, treating keys spanning more than one field as numeric will not do what you expect.
Возможно попробуйте добавить пространство между -k
а также 2
, или попробуйте настроить POS2
?