Я новичок в UNIX. Пожалуйста, объясните команду sort
. У меня есть сомнения, связанные с разделителем полей сортировки. Например: sort -k2, 2 filename
, пожалуйста, уточните. Пожалуйста, приведите небольшой пример.
1 ответ
В 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
- сравнить по числовому значению строки