2

Я новичок в UNIX. Пожалуйста, объясните команду sort . У меня есть сомнения, связанные с разделителем полей сортировки. Например: sort -k2, 2 filename , пожалуйста, уточните. Пожалуйста, приведите небольшой пример.

1 ответ1

2

В sort -k2, 2 filename есть синтаксическая ошибка. В опции -k2,2 не должно быть пробела. Кроме того, это исключило бы возможный источник путаницы и / или ошибки (в зависимости от содержимого сортируемого файла), добавив в команду либо порядок словаря, либо числовую опцию сортировки, чтобы было ясно, как все должно происходить. быть отсортированным.

Примеры

cat unsorted-file.txt # original unsorted file
9 8 7
6 55 44
3 2 1

sort -k1 -n unsorted-file.txt # example 1
3 2 1
6 55 44
9 8 7

sort -k3 -n unsorted-file.txt # example 2
3 2 1
9 8 7
6 55 44

sort -k1,3 -n unsorted-file.txt # example 3
3 2 1
6 55 44
9 8 7

sort -k2,3 -n unsorted-file.txt # example 4
3 2 1
9 8 7
6 55 44

объяснение

По умолчанию разделитель поля является непустым переходом к пустому.
KEYDEF -k - это F [.C], [КЛЮЧ] [, F [.C] [OPTS]] для начальной и конечной позиции, где F - номер поля, а C - позиция символа в поле. Оба - начало 1, и позиция остановки по умолчанию заканчивается концом строки.
-k1 - первое поле
-k3 - третье поле
-k1,3 - начать первое поле, остановить третье поле
-k2,3 - начать второе поле, остановить третье поле
-n - сравнить по числовому значению строки

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