Semenalidery.com

IT Новости из мира ПК
2 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Команда sort linux

Команда sort linux

Отправляет результат сортировки содержимого указанных ФАЙЛОВ (всех ФАЙЛОВ) на стандартный поток вывода. Все указываемые в командной строке файлы объединяются.

Обязательные аргументы для длинных форм параметров являются также обязательными и для коротких форм. -b, —ignore-leading-blanks игнорировать пробелы в начале сортируемых полей или начале ключей -d, —dictionary-order воспринимать в составе ключей лишь буквы (латинского алфавита), цифры и пробелы, игнорируя все прочие символы -f, —ignore-case во время сортировки преобразует строчные (маленькие) в соответствующие прописные (большие) буквы, т.е. выполняется сортировка нечувствительная к регистру символов -g, —general-numeric-sort выполнять сравнение в соответствии с общим числовым значением (используют совместно с параметром -b). Это численная сортировка, при которой дополнительно распознаётся экспоненциальное представление чисел (например, 9.1019e7) -i, —ignore-nonprinting в ключах рассматриваются только печатаемые (ASCII) символы, а остальные игнорируются -M, —month-sort выполнять сравнение по трёх-символьным сокращениям англоязычных названий месяцев, т.е. (незнакомое) -n, —numeric-sort числовая сортировка, т.е. сравнение ведётся по числовому значению (используют совместно с параметром -b) -r, —reverse сортировка выполняется в обратном порядке (по убыванию)

Другие параметры: -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 представляет собой одну или более одиночных букв, которые означают рассмотренные выше параметры и их действие перекрывает действие глобальных параметров для этого ключа. Если ни один ключ не задан, в качестве ключа используется вся строка. Ключ сортировки — это часть строки, которая рассматривается при сортировке, вместо того чтобы рассматривалась вся строка. Таким образом, команда:

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

означает сортировку с 6-го символа четвёртого поля до 1-го символа седьмого поля. Сортировка ведётся по числовому значению. Допускается задание нескольких параметров -k для того, чтобы определить несколько ключей, которые будут использованы последовательно в том порядке, в котором они указаны в командной строке.

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

Если в командной строке не указан никакой файл или вместо имени стоит дефис, считывается стандартный ввод (с клавиатуры).

На сортировку влияют установки локали. Установите переменную окружения LC_ALL=C , чтобы получить обычную сортировку в том порядке, который использует действительные значения байт.

АВТОР


СООБЩЕНИЕ ОБ ОШИБКАХ


АВТОРСКИЕ ПРАВА


СМ. ТАКЖЕ

вы получите доступ к более полному руководству.

Команда sort в Linux

sort – простая и очень полезная команда, которая меняет порядок строк в текстовом файле, то есть осуществляет их сортировку по алфавиту или в соответствии с числовыми значениями. По умолчанию правила сортировки следующие:

  • строки, начинающиеся с цифр, выводятся раньше строк, начинающихся с букв;
  • строки, начинающиеся с букв, выводятся в алфавитном порядке;
  • строки, начинающиеся со строчных букв, выводятся раньше строк, начинающихся с таких же заглавных.

Правила сортировки можно изменять при помощи опций. Мы рассмотрим их ниже.

Синтаксис

Основной синтаксис команды следующий

Команда также может быть использована в составе конвейеров (пайпов). Например

Опции

Как видим, сейчас строки выводятся в том же порядке как и были записаны. Для его сортировки в алфавитном порядке выполните команду:

Вы получите следующий результат:

Как видим сейчас строки отсортированы в алфавитном порядке.

Вывод результатов в файл

Команда sort не изменяет исходный файл, а просто выводит его содержимое в отсортированном виде. Чтобы сохранить результаты сортировки, воспользуйтесь опцией -o или перенаправлением вывода:

Выведем файл output.txt:

Вывод результатов в обратном порядке

Опция -r позволяет выводить результаты сортировки в обратном порядке:

Сортировка по заданным полям

Для сортировки по определенным полям используется опция –k. Она указывается в следующем формате:

Где ПОЛЕ1 и т.д. – номер поля (столбца), по которому осуществляется сортировка. Для примера создадим новый файл prices.txt со следующим содержимым:

Для его сортировки по второму столбцу можно выполнить следующую команду:

Результат будет следующим

На первый взгляд кажется что команда сработала неправильно. Действительно, кажется что в самом верху должны стоять сливы, а яблоки нижней строкой, да и апельсины дороже банан. Но на самом деле команда sort воспринимает цифры не как число, а как строку, т.е сортировка происходит по первой цифре. Вот тогда все встает на свои места команда вывела последовательность не числовую сортировку «200-150-80-60-50» а строковую «1-2-5-6-8».

Читать еще:  Get install linux

Опцию -k можно задавать в более сложном виде. Каждое поле задается в виде X.Y, где X – номер поля, а Y – начальная позиция поля, с которой начинается сортировка. Для примера создадим файл employee.txt со следующим содержимым:

Если просто указать номер поля, результат сортировки будет следующим:

Значение начальной позиции сортировки 4 заставит команду игнорировать первые 3 буквы и начнет сортировку с 4-й, т.е после «ст.» и «мл.»

Удаление дублирующих записей

Опция -u удаляет из результатов дублирующие записи и выводит только уникальные поля. Допустим, у нас есть файл cars.txt со следующими данными:

Выведет следующий результат:

Проверка сортировки

Опция -с позволяет проверить, отсортированы ли данные в файле. Если выполнение команды с этой опцией не возвращает никакого результата, значит, строки файла уже упорядочены. Иначе будут выведены строки, нарушающие порядок сортировки. Допустим, файл cars2.txt содержит следующие данные:

Audi
Cadillac
BMW
Dodge

Для проверки выполним следующую команду:

Вот ее результат.

Мы видим, что строка «BMW» нарушает порядок сортировки:

Заключение

Команда sort – простой, но очень мощный и полезный при работе с данными инструмент. У нее есть множество разнообразных опций, помимо уже рассмотренных, которые можно узнать на соответствующей man-странице. Кроме того, ее можно использовать совместно с командами find и join для поиска по большому количеству файлов или объединения результатов.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

6 мин для чтения 10 полезных примеров команды Sort в Linux

Главное меню » Операционная система Linux » 10 полезных примеров команды Sort в Linux

Команда Sort в Linux

Команда sort упорядочивает текстовые строки полезными способами. Этот простой инструмент может помочь вам быстро отсортировать информацию из командной строки.

Вы должны отметить несколько вещей:

  • При использовании сортировки без каких-либо параметров применяются правила по умолчанию. Это помогает понять правила по умолчанию, чтобы избежать неожиданных результатов.
  • При использовании сортировки ваши исходные данные в безопасности. Результаты вашего ввода отображаются только в командной строке. Однако вы можете указать вывод в отдельный файл, если хотите. Подробнее об этом позже.
  • Сортировка изначально была разработана для использования с символами ASCII. Мы не проверяли это, но возможно, что разные кодировки могут привести к неожиданным результатам.

Правила по умолчанию в команде sort

Это правила по умолчанию при использовании сортировки. Первые несколько примеров прояснят, как управляются эти приоритеты. Тогда мы рассмотрим специализированные варианты.

Примеры команды сортировки

Позвольте нам показать вам несколько примеров команды sort, которые вы можете использовать в различных ситуациях.

1. Сортировка в алфавитном порядке

Команда sort по умолчанию позволяет легко просматривать информацию в алфавитном порядке. Никаких опций не требуется, и даже для записей со смешанным регистром сортировка AZ работает должным образом

Мы собираемся использовать пример текстового файла с именем andreyex.txt, и если вы просмотрите содержимое файла , вы увидите следующее:

Linux
Debian
Mint
CentOS
Ubuntu

Вот отсортированный по алфавиту вывод:

2. Сортировка по числовому значению [опция -n]

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

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

1. Debian
2. CentOS
3. Linux
4. Mint
5. Ubuntu

После сортировки результат:

Выглядит хорошо, правда? Вы можете полагаться на этот метод, чтобы точно расположить ваши данные? Возможно нет. Давайте посмотрим на другой пример, чтобы выяснить, почему.

Вот наш новый образец текста:

Теперь, если мы используем команду sort без каких-либо опций, то вот что мы получим:

При добавлении параметра -n, оценивается числовое значение строки, а не только первый символ. Теперь вы можете видеть, что наш список правильно отсортирован.

Теперь у вас будет правильно отсортированный вывод:
1
2
3
5
5
10
21
23
60
432

3. Сортировка в обратном порядке [опция -r]

Для этого мы снова будем использовать наш список дистрибутивов. Обратная функция не требует пояснений. Это изменит порядок содержимого вашего файла.

И здесь у вас есть выходной текст в обратном порядке:

4. Случайная сортировка [опция -R]

Если вы случайно нажали клавишу Shift, при попытке выполнить функцию реверса, возможно, вы получили странные результаты. -R переставляет вывод в случайном порядке.

Вот случайно отсортированный вывод:

5. Сортировать по месяцам [опция -M]

Сортировка также имеет встроенную функциональность, чтобы организовать по месяцам. Он распознает несколько форматов, основанных на информации о конкретной локали. Мы попытаемся продемонстрировать несколько несоответствующих тестов, чтобы показать, что это будет организовано по дате, а не по году. Сокращения месяца отображаются перед полными именами.

Вот пример текстового файла в этом примере:

Mar
March
February
Apr
April
August
July
June
November
September
1
4
3
6
01/03/19
01/08/19
02/09/18

Давайте разберем по месяцам, используя опцию -M:

Вот результат, который вы увидите:

6. Сохраните отсортированные результаты в другой файл

Как мы упоминали ранее, сортировка не изменяет исходный файл по умолчанию. Если вам нужно сохранить отсортированный контент, это можно сделать.

Для этого примера мы создали новый файл, в котором хотим, чтобы отсортированная информация была напечатана и сохранена с именем andreyex_sorted.txt.

Внимание: если вы попытаетесь перенаправить отсортированные данные в один и тот же файл, он сотрет содержимое вашего файла.

Читать еще:  Как оптимизировать блюстакс

Если вы используете команду cat в выходном файле, это будет его содержимое:

7. Сортировать определенный столбец [опция -k]

Если в вашем файле есть таблица, вы можете использовать опцию -k, чтобы указать, какой столбец сортировать. Мы добавили несколько произвольных чисел в качестве третьего столбца и будем отображать выходные данные, отсортированные по каждому столбцу. Мы включили несколько примеров, чтобы показать разнообразие возможных результатов. Опции добавляются после номера столбца.

1. Debian 300
2. CentOS 200
3. Linux 100
4. Mint 400
5. Ubuntu 500

Это позволит отсортировать текст во втором столбце в алфавитном порядке:

Это позволит отсортировать текст по цифрам в третьем столбце.
3. Linux 100
2. CentOS 200
1. Debian 300
4. Mint 400
5. Ubuntu 500

То же, что и вышеупомянутая команда, только что порядок сортировки был обратным.

8. Сортировка и удаление дубликатов [опция -u]

Если у вас есть файл с потенциальными дубликатами, опция -u значительно облегчит вашу жизнь. Помните, что сортировка не будет вносить изменения в исходный файл данных. Мы решили создать новый файл только с элементами, которые являются дубликатами. Ниже вы увидите входные данные, а затем содержимое каждого файла после выполнения команды.

1. Debian
2. CentOS
3. Linux
4. Mint
5. Ubuntu
2. CentOS
3. Linux
4. Mint
1. Debian
3. Linux
5. Ubuntu

Вот выходные файлы отсортированы и без дубликатов.

9. Игнорировать регистр при сортировке [опция -f]

Многие современные дистрибутивы, работающие с sort, по умолчанию реализуют игнорирование регистра. Если это не так, добавление опции -f даст ожидаемые результаты.

Вот вывод, где случаи игнорируются командой sort:

10. Сортировка по числовым значениям человека [опция -h]

Эта опция позволяет сравнивать буквенно-цифровые значения, такие как 2k (то есть 2000).

Вот отсортированный вывод:

Мы надеемся, что эта статья помогла вам получить базовое использование команды sort в Linux. Если у вас есть какой-нибудь классный трюк, почему бы не поделиться им с нами в разделе комментариев?

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Команда sort linux

Наши партнеры

Библиотека сайта rus-linux.net

НАЗВАНИЕ
sort — сортировка и/или слияние файлов

ОПИСАНИЕ
Команда sort сортирует строки, входящие во все исходные файлы, и выдает результат на стандартный вывод. Если имена файлов не указаны, или в качестве файла указан -, исходная информация поступает со стандартного ввода.

При упорядочении используется один или несколько ключей сортировки, выделяемых из каждой вводимой строки. По умолчанию ключ сортировки один — вся строка, а порядок является лексикографическим, соответствующим принятой кодировке символов.

Следующие опции изменяют стандартный порядок работы: -c Проверить, является ли (единственный) исходный файл уже отсортированным. На стандартный вывод ничего не выдается. В стандартный протокол выводится соответствующее сообщение только в случае нарушения упорядоченности строк.

-m Только слияние исходных файлов, которые предполагаются отсортированными.

-u Опция уникальности: из всех совпадающих строк выводить только одну.

-o выходной_файл Результат направляется не на стандартный вывод, а в выходной_файл, который может совпадать с одним из исходных.

-yкилобайт Количество дополнительной памяти, используемой командой sort, существенно влияет на скорость ее работы. Если опция -y отсутствует, sort начинает работу, используя область памяти некоторого стандартного размера, а в случае необходимости запрашивает дополнительную память. Если опция -y задана с аргументом, команда sort начинает работу, используя указанное число килобайт памяти, если только не нарушены ограничения сверху или снизу; в этом случае используется соответствующее крайнее значение. Таким образом, указание -y0 гарантирует использование минимального объема памяти. Опция -y без аргумента задает область памяти максимального размера.

-zдлина Во время сортировки запоминается размер самой длинной строки, так что для фазы слияния команда sort может отвести буфер нужного размера. Если, в силу действия опций -c или -m, фаза сортировки пропускается, используется некоторый стандартный размер. Наличие строк, превышающих по длине буфер, приводит к аварийному завершению команды. Задание заведомо достаточной длины гарантирует нормальное выполнение слияния.

Следующие опции позволяют выбрать нужный способ сравнения: -d «Словарный» порядок: при сравнении являются значимыми только буквы, цифры, пробелы и знаки табуляции.

-f Преобразовывать малые буквы в большие.

-i При нечисловых сравнениях игнорировать символы с (восьмеричными) кодами, не лежащими в пределах 040-0176.

-M Сравнивать как месяца. Первые три символа, отличные от пробела, сравниваются таким образом, что «JAN» -n Числовое сравнение. Начальные пробелы отбрасываются, затем цифровые цепочки символов, содержащие быть может знак минус и десятичную точку, сравниваются как числа. Эта опция включает опцию -b (см. ниже). Отметим, что опция -b действует только на ключи сортировки с наложенными ограничениями.

-r Заменить результат сравнения на противоположный.

Если опции, задающие способ сравнения, указаны до ограничений на ключи сортировки, то они применяются глобально ко всем ключам. Если же соответствующие флаги ассоциированы с определенными ключами сортировки (см. ниже), они воздействуют только на «свои» ключи.

Полем называется минимальная последовательность символов, за которой следует разделитель полей или перевод строки. По умолчанию символом-разделителем считается пробел или символ табуляции. Пробелы и табуляции сразу вслед за разделителем (если они есть) принадлежат следующему полю. Все пробелы в начале строки входят в первое поле. На трактовку разделителей влияют следующие опции: -b Игнорировать начальные пробелы при определении начала и конца ключей сортировки. Если опция -b указана перед первым аргументом +позиция_1, она действует на все ключи с наложенными ограничениями. Флаг b можно связать и с отдельными ключами сортировки (см. ниже).

-tразделитель Использовать заданный символ как разделитель полей. Разделитель не является частью поля (хотя и может входить в ключ сортировки). Каждое вхождение разделителя является значимым, то есть два рядом стоящих разделителя ограничивают пустое поле.

Читать еще:  Linux docker kubernetes

При наложении ограничения на ключ сортировки указывается позиция начала ключа (+позиция_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, используя в качестве ключа второе поле:
  2. Отсортировать по убыванию содержимое файлов f2 и f3, поместив результат в файл f4. Ключом сортировки служит первый символ второго поля:
  3. Отсортировать по убыванию содержимое файлов f5 и f6. Ключом сортировки служит первый непробел второго поля:
  4. Распечатать файл паролей [см. passwd], отсортировав его по числовым значениям идентификаторов пользователей (третье поле, поля разделяются символом :):
  5. Распечатать строки уже отсортированного файла f7, выводя лишь первую из строк с одинаковыми третьими полями:

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

ПРЕДОСТЕРЕЖЕНИЯ
Не гарантируется сохранение порядка следования строк с равными ключами.

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

COREUTILS. Команда sort. Сортировка вывода программ

Скорее всего пакет coreutils у вас уже установлен, хотя бы потому, что удалить его нельзя, но на всякий случай проверьте:

dpkg -l | grep coreutils #для debian-based дистрибутивов

Если в первой колонке вывода будет стоять буква «i», означающая installed, значит все в порядке.

Пользоваться утилитой sort для сортировки вывода программ предельно просто. Для этого достаточно просто перенаправить вывод какой-либо программы на поток ввода sort:

Данная конструкция сначала вызовет команду ls, которая считает содержимое каталога, а затем передаст результат команде sort, которая отсортирует его по алфавиту (ключ -d указывает использовать алфавит в качестве шаблона).

Другой пример использования команды sort в linux — это сортировка содержимого файла. Отсортируем, например, строки, содержащиеся в файле /etc/passwd, с целью получения имен пользователей по алфавиту:

sort -d /etc/passwd

Но что делать, если вы хотите, используя тот же файл, отсортировать строки уже не по имени пользователя, а, например, по их уникальному идентификатору (UID)? Утилита sort умеет работать и с таблицами — сортировать по столбцу. Вернее изначально, sort как раз и работает с таблицами, вот только в качестве разделителя она по-умолчанию использует пробел и знак табуляции для разделения столбцов, знак переноса строки для разделения строк. Так как файл /etc/passwd использует «:» для разделения столбцов, то этот символ нужно передать sort при помощи ключа «-t» явно, а далее просто указать номер столбца с помощью ключа «-k». Но только ничего не получится, если опять же не указать шаблон. В данном случае нам понадобиться сортировать числа — поэтому вместо «-d» (по алфавиту) стаим -n (по числам). Вот, что получилось:

sort -n -t : -k 2,2 /etc/passwd

Внимательный читатель спросит: «Почему в качестве параметра ключа «-k» мы указали не просто номер столбца, а номер столбца через запятую с его же номером?». Ответ прост. Ключ «-k» очень мощный. Он позволяет гибко выбирать сортируемое поле. Используя предыдущий пример, немного изменим параметры ключа «-k»:

sort -n -t : -k 2.2,2.4 /etc/passwd

Добавив точку, мы тем самым сузили диапазон для проведения сортировки. Теперь команда расшифровывается так: отсортируй содержимое файл /etc/passwd, приняв в качестве исходных данных символ со второго по четвертый во 2-ом столбце.

Приведем еще один классный пример. Представим, что у нас закончилось место в разделе /home, и мы хотим узнать 10 самых объемных каталогов и файлов внутри /home с целью понять, куда копать:

du -a /home | sort -n | tail

Сначала командой du мы проходимся по всем файлам и подкаталогам /home, затем сортируем полученные строки по возрастанию и, наконец, tail’ом отображаем последние 10

На этом возможности команды soft не исчерпываются. Полезным может оказаться ключ «-r», позволяющий сортировать строки в обратном порядке. Его не стоит путать с ключом «-R», который совершенно случайным образом сортирует содержимое файла или вывода программы. Должно быть такая функция тоже кому-то будет полезной.

Также стоит обратить ваше внимание на ключ «-u», который заставляет sort выводит только уникальные значения. Т.е., если при сортировке выяснится, что сортируемые значения одинаковы, будет выведено только то, которое первым попало в поле зрения sort. Ключ «-u» не работает для значений, например «1» и » 1″ (один и пробел один), так как пробел тоже считается символом. Чтобы этого избежать применяют ключ «-b», позволяющий игнорировать пробелы перед сортируемой строкой.

Ссылка на основную публикацию
Adblock
detector