Sort — различия между версиями

Материал из VAAL-WIKI
Перейти к: навигация, поиск
(Добавлено описание команды sort)
 
(нет различий)

Текущая версия на 13:29, 10 января 2018

sort — Команда сортировки и/или слияния файлов.

Синтаксис

sort [-c] [-m] [-u] [-o выходной_файл] [-yкилобайт] [-zдлина]

[-d] [-f] [-i] [-M] [-n] [-r] [-b] [-tразделитель]
[+позиция_1 [-позиция_2]] [файл ...]

Описание

Команда sort сортирует строки, входящие во все исходные файлы, и выдаёт результат на стандартный вывод. Если имена файлов не указаны, или в качестве файла указан -, исходная информация поступает со стандартного ввода. При упорядочении используется один или несколько ключей сортировки, выделяемых из каждой вводимой строки. По умолчанию ключ сортировки один – вся строка, а порядок является лексикографическим, соответствующим принятой кодировке символов.

Основные параметры:

Обязательные аргументы для длинных форм параметров являются также обязательными и для коротких форм.

-b, --ignore-leading-blanks
игнорировать пробелы в начале сортируемых полей или начале ключей
-d, --dictionary-order
воспринимать в составе ключей лишь буквы (латинского алфавита), цифры и пробелы, игнорируя все прочие символы
-f, --ignore-case
во время сортировки преобразует строчные (маленькие) в соответствующие прописные (большие) буквы, т.е. выполняется сортировка нечувствительная к регистру символов
-g, --general-numeric-sort
выполнять сравнение в соответствии с общим числовым значением (используют совместно с параметром -b). Это численная сортировка, при которой дополнительно распознаётся экспоненциальное представление чисел (например, 9.1019e7)
-i, --ignore-nonprinting
в ключах рассматриваются только печатаемые (ASCII) символы, а остальные игнорируются
-M, --month-sort
выполнять сравнение по трёх-символьным сокращениям англоязычных названий месяцев, т.е. (незнакомое) < `JAN' < ... < `DEC'
-n, --numeric-sort
числовая сортировка, т.е. сравнение ведётся по числовому значению (используют совместно с параметром -b)
-r, --reverse
сортировка выполняется в обратном порядке (по убыванию)
-yкилобайт
количество дополнительной памяти, используемой командой sort, существенно влияет на скорость её работы. Если опция -y отсутствует, sort начинает работу, используя область памяти некоторого стандартного размера, а в случае необходимости запрашивает дополнительную память. Если опция -y задана с аргументом, команда sort начинает работу, используя указанное число килобайт памяти, если только не нарушены ограничения сверху или снизу; в этом случае используется соответствующее крайнее значение. Таким образом, указание -y0 гарантирует использование минимального объема памяти. Опция -y без аргумента задаёт область памяти максимального размера.
-zдлина
во время сортировки запоминается размер самой длинной строки, так что для фазы слияния команда sort может отвести буфер нужного размера. Если, в силу действия опций -c или -m, фаза сортировки пропускается, используется некоторый стандартный размер. Наличие строк, превышающих по длине буфер, приводит к аварийному завершению команды. Задание заведомо достаточной длины гарантирует нормальное выполнение слияния.
Другие параметры
-c, --check
проверяет сортировался ли указанный файл. Если да, то не выполняет сортировку, иначе выводит сообщение об ошибке
-k, --key=ПОЗ1[,ПОЗ2]
выбирает ключ сортировки, начиная с позиции ПОЗ1 и заканчивая позицией ПОЗ2 (включительно). Номера полей и смещения символов указываются, начиная с 1
-m, --merge
объединяет ранее отсортированные ФАЙЛЫ, которые не сортируются повторно
-o, --output=ФАЙЛ
выводит результат в указанный файл ФАЙЛ вместо стандартного вывода
-s, --stable
стабилизирует сортировку, не выполняя сравнения последней пересортировки
-S, --buffer-size=РАЗМЕР
под основной буфер в памяти использует область размером РАЗМЕР
-t, --field-separator=СИМВОЛ
использовать СИМВОЛ в качестве разделителя полей
-T, --temporary-directory=КАТАЛОГ
использует указанный КАТАЛОГ для временных файлов, игнорируя переменную окружения $TMPDIR или /tmp; составные параметры могут указывать на различные каталоги
-u, --unique
уникальная сортировка: игнорирует повторяющиеся строки. Обычно применяют с параметром -c для проверки сортированных файлов с целью прерывания выполнения, если встретится несколько одинаковых строк подряд; без -c выводится только первая строка из одинаковых
-z, --zero-terminated
вместо символа новой строки (newline), завершает строки двоичным 0
--help
вывести справку о программе, её параметрах и завершить работу
--version
вывести информацию о версии программы и завершить работу

Синтаксис параметра -k, --key=ПОЗ1[,ПОЗ2] означает следующее:
ПОЗ указывается в формате F[.C][OPTS], где F является порядковым номером поля, а C позицией символа в этом поле. OPTS представляет собой одну или более одиночных букв, которые означают рассмотренные выше параметры и их действие перекрывает действие глобальных параметров для этого ключа. Если ни один ключ не задан, в качестве ключа используется вся строка. Ключ сортировки — это часть строки, которая рассматривается при сортировке, вместо того чтобы рассматривалась вся строка. Таким образом, команда:

sort -k1.3

осуществляет сортировку по первому полю, начиная с его третьего символа. Команда:

sort -k4.6,7n

означает сортировку с 6-го символа четвёртого поля до 1-го символа седьмого поля. Сортировка ведётся по числовому значению. Допускается задание нескольких параметров -k для того, чтобы определить несколько ключей, которые будут использованы последовательно в том порядке, в котором они указаны в командной строке. Величина размера SIZE памяти, отводимой для работы команды sort может быть задана со следующими суффиксами: %-1% от общей памяти; b — в байтах; K — 1024 байт (по умолчанию); и соответственно для M, G, T, P, E, Z, Y. Если в командной строке не указан никакой файл или вместо имени стоит дефис, считывается стандартный ввод (с клавиатуры).

Примеры

Отсортировать файл f1, используя в качестве ключа второе поле
sort +1 -2 f1
Отсортировать по убыванию содержимое файлов f2 и f3, поместив результат в файл f4. Ключом сортировки служит первый символ второго поля:
sort -r -o f4 +1.0 -1.2 f2 f3
Отсортировать по убыванию содержимое файлов f5 и f6. Ключом сортировки служит первый не пробел второго поля:
sort -r +1.0b -1.1b f5 f6
Распечатать файл паролей, отсортировав его по числовым значениям идентификаторов пользователей (третье поле, поля разделяются символом :):
sort -t: +2n -3 /etc/passwd
Распечатать строки уже отсортированного файла f7, выводя лишь первую из строк с одинаковыми третьими полями:
sort -um +2 -3 f7

Диагностика

Если в последней строке файла пропущен символ возврата каретки, то он добавляется автоматически, о чем выдаётся предупреждение.

Предостережения

Не гарантируется сохранение порядка следования строк с равными ключами. Не оговаривается приоритет различных способов сравнения (например, числового и словарного), поэтому задавать комбинацию флагов dMn не имеет смысла.