less file.txt
01 Joe x
02 Marie y
03 Albert p
04 Dave k
Я хочу сортировать по столбцу 2. Однако обе следующие команды дают одинаковый вывод. Было бы здорово узнать, в чем разница между использованием -k2 и -k2,2.
less file.txt | sort -k2
иless file.txt | sort -k2,2
Выход:
03 Albert p
04 Dave k
01 Joe x
02 Marie y
решение1
Спецификация после запятой определяет stop position
(по умолчанию end of the line
)
man 1 sort
:
-k
,--key=KEYDEF
сортировка по ключу; KEYDEF указывает местоположение и типKEYDEF —
F[.C][OPTS][,F[.C][OPTS]]
начальная и конечная позиция, где F — номер поля, а C — позиция символа в поле; обе имеют начальную точку 1, а конечная позиция по умолчанию соответствует концу строки.
Например, рассмотрим входные данные file.txt
:
03 Albert p
04 Albert a
- Если сортировать с использованием
-k2
,Albert a
будет помещен передAlbert p
- При использовании
-k2,2
третий ключ будет проигнорирован при сортировке
или другой пример:
03 Albert p
04 Aave k
Сортировку по первому символу второго ключа можно выполнить с помощью -k2,2.2
:
$ sort -k2,2.2 file.txt
03 Albert p
04 Aave k
- Если бы
-k2
использовались,Aa
были бы отсортированы раньшеAl