Я новичок в 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][OPTS][,F[.C][OPTS]] для начальной и конечной позиции, где F — номер поля, а C — позиция символа в поле. Оба являются исходными 1, а конечной позицией по умолчанию является конец строки.
-k1
- первое поле
-k3
- третье поле
-k1,3
- начало первого поля, конец третьего поля
-k2,3
- начало второго поля, конец третьего поля
-n
- сравнение по числовому значению строки