SORT(1) SORT(1)
НАЗВАНИЕ
sort - сортировка и/или слияние файлов
СИНТАКСИС
sort [-c] [-m] [-u] [-o выходной_файл] [-yкилобайт] [-zдлина]
[-d] [-f] [-i] [-M] [-n] [-r] [-b] [-tразделитель]
[+позиция_1 [-позиция_2]] [файл ...]
ОПИСАНИЕ
Команда sort сортирует строки, входящие во все исходные
файлы, и выдает результат на стандартный вывод. Если
имена файлов не указаны, или в качестве файла указан -,
исходная информация поступает со стандартного ввода.
При упорядочении используется один или несколько ключей
сортировки, выделяемых из каждой вводимой строки. По
умолчанию ключ сортировки один - вся строка, а порядок
является лексикографическим, соответствующим принятой
кодировке символов.
Следующие опции изменяют стандартный порядок работы:
-c Проверить, является ли (единственный) исходный
файл уже отсортированным. На стандартный вывод ни-
чего не выдается. В стандартный протокол выводится
соответствующее сообщение только в случае наруше-
ния упорядоченности строк.
-m Только слияние исходных файлов, которые предпола-
гаются отсортированными.
-u Опция уникальности: из всех совпадающих строк вы-
водить только одну.
-o выходной_файл
Результат направляется не на стандартный вывод, а
в выходной_файл, который может совпадать с одним
из исходных.
-yкилобайт
Количество дополнительной памяти, используемой ко-
мандой sort, существенно влияет на скорость ее ра-
боты. Если опция -y отсутствует, sort начинает ра-
боту, используя область памяти некоторого стан-
дартного размера, а в случае необходимости запра-
шивает дополнительную память. Если опция -y задана
с аргументом, команда sort начинает работу, ис-
пользуя указанное число килобайт памяти, если
только не нарушены ограничения сверху или снизу; в
этом случае используется соответствующее крайнее
значение. Таким образом, указание -y0 гарантирует
использование минимального об ема памяти. Опция -y
без аргумента задает область памяти максимального
размера.
-zдлина
Во время сортировки запоминается размер самой
длинной строки, так что для фазы слияния команда
sort может отвести буфер нужного размера. Если, в
силу действия опций -c или -m, фаза сортировки
пропускается, используется некоторый стандартный
размер. Наличие строк, превышающих по длине буфер,
приводит к аварийному завершению команды. Задание
заведомо достаточной длины гарантирует нормальное
выполнение слияния.
Следующие опции позволяют выбрать нужный способ сравне-
ния:
-d "Словарный" порядок: при сравнении являются значи-
мыми только буквы, цифры, пробелы и знаки табуля-
ции.
-f Преобразовывать малые буквы в большие.
-i При нечисловых сравнениях игнорировать символы с
(восьмеричными) кодами, не лежащими в пределах
040-0176.
-M Сравнивать как месяца. Первые три символа, отлич-
ные от пробела, сравниваются таким образом, что
"JAN" < "FEB" < ... < "DEC" (малые буквы преобра-
зуются в большие). Остальные трехсимвольные соче-
тания считаются меньшими, чем "JAN". Эта опция
включает опцию -b (см. ниже).
-n Числовое сравнение. Начальные пробелы отбрасывают-
ся, затем цифровые цепочки символов, содержащие
быть может знак минус и десятичную точку, сравни-
ваются как числа. Эта опция включает опцию -b (см.
ниже). Отметим, что опция -b действует только на
ключи сортировки с наложенными ограничениями.
-r Заменить результат сравнения на противоположный.
Если опции, задающие способ сравнения, указаны до огра-
ничений на ключи сортировки, то они применяются гло-
бально ко всем ключам. Если же соответствующие флаги
ассоциированы с определенными ключами сортировки (см.
ниже), они воздействуют только на "свои" ключи.
Полем называется минимальная последовательность симво-
лов, за которой следует разделитель полей или перевод
строки. По умолчанию символом-разделителем считается
пробел или символ табуляции. Пробелы и табуляции сразу
вслед за разделителем (если они есть) принадлежат сле-
дующему полю. Все пробелы в начале строки входят в пер-
вое поле. На трактовку разделителей влияют следующие
опции:
-b Игнорировать начальные пробелы при определении на-
чала и конца ключей сортировки. Если опция -b ука-
зана перед первым аргументом +позиция_1, она
действует на все ключи с наложенными ограничения-
ми. Флаг b можно связать и с отдельными ключами
сортировки (см. ниже).
-tразделитель
Использовать заданный символ как разделитель полей.
Разделитель не является частью поля (хотя и может
входить в ключ сортировки). Каждое вхождение раз-
делителя является значимым, то есть два рядом сто-
ящих разделителя ограничивают пустое поле.
При наложении ограничения на ключ сортировки указывает-
ся позиция начала ключа (+позиция_1) и позиция сразу за
концом ключа (-позиция_2). Если опция -позиция_2 от-
сутствует, ключ занимает весь остаток строки.
Позиция_1 и позиция_2 задаются как пара m.n, возможно,
с последующими флагами bdfiMnr. Начальная позиция зада-
ется как +m.n, что означает (n+1)-ый символ в (m+1)-ом
поле (поля и символы нумеруются с единицы). Отсутствие
.n означает .0, то есть первый символ (m+1)-го поля.
Если указан флаг b, то n отсчитывается от первого неп-
робела в (m+1)-ом поле; +m.0b означает первый непробел
в (m+1)-ом поле.
Позиция за концом ключа записывается как -m.n, что оз-
начает (n+1)-ый символ (включая разделители) после пос-
леднего символа m-го поля. Если .n опущено, то подразу-
мевается .0, то есть разделитель после m-го поля. Если
указан флаг b, то n отсчитывается от первого непробела
в (m+1)-ом поле.
Если указано несколько ключей сортировки, то более
поздние используются только в случае равенства более
ранних. Если значения ключей сортировки двух строк сов-
падают, строки упорядочиваются с учетом всех символов.
ПРИМЕРЫ
1. Отсортировать файл f1, используя в качестве ключа
второе поле:
sort +1 -2 f1
2. Отсортировать по убыванию содержимое файлов f2 и f3,
поместив результат в файл f4. Ключом сортировки служит
первый символ второго поля:
sort -r -o f4 +1.0 -1.2 f2 f3
3. Отсортировать по убыванию содержимое файлов f5 и f6.
Ключом сортировки служит первый непробел второго поля:
sort -r +1.0b -1.1b f5 f6
4. Распечатать файл паролей [см. passwd(4)], отсортиро-
вав его по числовым значениям идентификаторов пользова-
телей (третье поле, поля разделяются символом :):
sort -t: +2n -3 /etc/passwd
5. Распечатать строки уже отсортированного файла f7,
выводя лишь первую из строк с одинаковыми третьими по-
лями:
sort -um +2 -3 f7
ФАЙЛЫ
/usr/tmp/stm???
СМ. ТАКЖЕ
comm(1), join(1), uniq(1).
ДИАГНОСТИКА
При возникновении различных ошибок (например, строка
слишком длинная) и при обнаружении нарушений порядка
при запуске с опцией -c в стандартный протокол выдается
соответствующее сообщение и сортировка завершается с
ненулевым кодом.
Если в последней строке файла пропущен символ возврата
каретки, то он добавляется автоматически, о чем выдает-
ся предупреждение.
ПРЕДОСТЕРЕЖЕНИЯ
Не гарантируется сохранение порядка следования строк с
равными ключами.
Не оговаривается приоритет различных способов сравне-
ния (например, числового и словарного), поэтому зада-
вать комбинацию флагов dMn не имеет смысла.
|