Это устаревший (или, по крайней мере, устаревший) «традиционный» синтаксис для указания значений полей и столбцов, задокументированный в информационная сортировка
:
В системах, не соответствующих стандарту POSIX 1003.1-2001, «сортировка» поддерживает
традиционный синтаксис начального нуля «+POS1 [-POS2]» для указания ключей сортировки.
Традиционная команда «sort +A.X -B.Y» эквивалентна «sort -k».
A+1.X+1,Bâ, если Y равен â0â или отсутствует, в противном случае это эквивалентно âsort -k
A+1.X+1,B+1.Yâ.
В приведенном вами примере:
сортировать +0nr -2 +2d
есть два набора спецификаторов: "+0 -2
" и "-2
". У первого есть А=0
, В=2
, Д
отсутствует и, следовательно, эквивалентен -k0+1,2
то есть -к1,2
в современной индексации на основе 1. Второй имеет А=2
с обоими Б
и Д
отсутствует, поэтому становится просто -k3
.
Варианты букв имеют свои обычные значения, т.е.
-d, --словарь-порядок
учитывать только пробелы и буквенно-цифровые символы
-n, --числовая сортировка
сравнить по числовому значению строки
-р, --обратный
обратить результат сравнения
так что результат - обратная числовая сортировка по первым двум полям, -к1,2нр
с последующей сортировкой по словарю в третьем (и последующих) полях -k3d
.
Информация
page не рекомендует использовать эту форму синтаксиса:
Скрипты, предназначенные для использования на стандартных хостах, должны избегать традиционных
синтаксис и вместо этого следует использовать «-k». Например, избегайте «сортировать +2», так как
это может быть интерпретировано либо как «sort ./+2», либо как «sort -k 3». Если твой
скрипт также должен работать на хостах, поддерживающих только традиционный синтаксис,
он может использовать такой тест, как: if sort -k 1 </dev/null >/dev/null 2>&1; тогда
... чтобы решить, какой синтаксис использовать.