- Учебник по командам sort в Linux для начинающих (8 примеров)
- Команда сортировки Linux
- Q1. Как использовать команду сортировки?
- Q2. Как заставить сортировку игнорировать начальные пробелы?
- Q3. Как заставить сортировку игнорировать регистр?
- Q4. Как сделать сортировку по сравнению чисел?
- Q5. Как заставить сортировку работать с удобочитаемыми числовыми значениями?
- Q6. Как сделать так, чтобы сортировка проверяла только отсортированный ввод?
- Q7. Как заставить сортировку объединять уже отсортированные файлы?
- Q8. Как заставить sort записать результат в файл?
- Заключение
- Команда sort в Linux
- Синтаксис
- Опции
- Примеры использования sort
- 1. Сортировка
- 2. Обратная сортировка
- 3. Сортировка по колонке
- 4. Сортировка по номеру
- 5. Удаление дубликатов
- 6. Сортировка по нескольким полям
- Похожие записи
- Оцените статью
- Об авторе
- 6 комментариев к “Команда sort в Linux”
Учебник по командам sort в Linux для начинающих (8 примеров)
Ищете утилиту командной строки для сортировки содержимого в текстовых файлах? Посмотрите не дальше, чем Sort, инструмент, специально созданный для этой цели. В этом уроке мы обсудим эту команду, используя несколько простых для понимания примеров. Но прежде чем мы это сделаем, стоит упомянуть, что все приведенные здесь примеры были протестированы на компьютере с Ubuntu 22.04 LTS.
Команда сортировки Linux
Команда Sort позволяет сортировать строки в текстовом файле. Ниже приведен его синтаксис:
А вот как это описывает справочная страница инструментов:
Write sorted concatenation of all FILE(s) to standard output.
With no FILE, or when FILE is -, read standard input.
Ниже приведены несколько примеров в стиле вопросов и ответов, которые должны дать вам хорошее представление о том, как работает команда сортировки.
Q1. Как использовать команду сортировки?
Предположим, у вас есть файл, содержащий несколько имен, и вы хотите отсортировать их в алфавитном порядке. Затем все, что вам нужно сделать, это передать имя файла в качестве входных данных для команды сортировки.
Итак, если файл 1 содержит следующие строки:
Zimbabwe
Serbia
Norway
Australia
Australia
Norway
Serbia
Zimbabwe
Q2. Как заставить сортировку игнорировать начальные пробелы?
В зависимости от вашего языкового стандарта сортировка может привести к неожиданным результатам, если строки содержат начальные пробелы. Например:
Предположим, что файл содержит следующие строки:
Zimbabwe
Serbia
Norway
Australia
И вы запускаете sort только для того, чтобы увидеть следующий результат:
Norway
Serbia
Australia
Zimbabwe
Это может показаться неожиданным, но на самом деле произошло то, что строки, содержащие начальные пробелы, были отсортированы на основе пробелов, а другие отсортированы по алфавиту. Чтобы убедиться, что команда Sort игнорирует начальные пробелы, используйте параметр -b. Итак, в этом случае вы получите следующий результат:
Australia
Norway
Serbia
Zimbabwe
Q3. Как заставить сортировку игнорировать регистр?
Если в файле есть слова/строки, начинающиеся как с прописных, так и с строчных букв, то при сортировке отображаются те, в которых верхний регистр находится вверху. Однако при желании вы можете изменить это поведение с помощью параметра командной строки -f.
Q4. Как сделать сортировку по сравнению чисел?
Предположим, файл содержит только числа, и вы хотите отсортировать их по порядку. Затем это можно сделать с помощью параметра командной строки -g.
Например, файл со следующим содержимым:
Можно отсортировать с помощью команды sort для получения следующих результатов:
Q5. Как заставить сортировку работать с удобочитаемыми числовыми значениями?
Если вы хотите, чтобы sort работала с удобочитаемыми числовыми значениями, такими как 1K, 2G и т. д., используйте параметр командной строки -h.
Так, например, файл со следующими строками:
Можно отсортировать следующим образом с помощью параметра -h:
Q6. Как сделать так, чтобы сортировка проверяла только отсортированный ввод?
На всякий случай, если вы хотите, чтобы sort только проверяла, отсортирован ли файл или нет, используйте параметр командной строки -c.
Например, если файл1 содержит следующие строки:
Затем с помощью -c вы увидите, что сортировка производит следующий вывод:
Таким образом, вы замечаете, что инструмент не только указывает на наличие беспорядка, но и выводит его местоположение.
Q7. Как заставить сортировку объединять уже отсортированные файлы?
Если вы хотите, чтобы sort объединила два уже отсортированных файла, используйте параметр командной строки -m.
Например, в моем случае и файл1, и файл2 содержали следующие строки:
А вот как опция -m объединила эти файлы:
Q8. Как заставить sort записать результат в файл?
По умолчанию команда sort записывает вывод в STDOUT. Однако вы можете заставить его писать в заданный файл, используя опцию -o.
Заключение
Команда «Сортировка» предоставляет множество параметров. Здесь мы обсудили несколько ключевых. Мы предлагаем вам сначала попрактиковаться в этом, а когда вы закончите, перейдите на справочную страницу команд, чтобы узнать больше об этом.
Команда sort в Linux
Сегодня мы поговорим о команде sort. Это утилита для вывода текстовых строк в определенном порядке. Проще говоря, для сортировки. Ее можно использовать для сортировки текста из одного или нескольких файлов или c помощью нее может быть выполнена сортировка вывода linux для какой-либо команды. Это может быть полезно во многих случаях. Например, отсортировать файлы по размеру в выводе команды du или собрать частотность использования команд из истории.
В этой инструкции мы подробно рассмотрим возможности команды sort Linux, ее опции и разберем несколько примеров использования.
Синтаксис
Уже по традиции подобных статей, сначала рассмотрим общий синтаксис команды:
$ sort опции файл
$ команда | sort опции
Опции
Теперь рассмотрим основные опции утилиты sort.
- -b — не учитывать пробелы
- -d — использовать для сортировки только буквы и цифры
- -i — сортировать только по ASCII символах
- -n — сортировка строк linux по числовому значению
- -r — сортировать в обратном порядке
- -с — проверить был ли отсортирован файл
- -o — вывести результат в файл
- -u — игнорировать повторяющиеся строки
- -m — объединение ранее отсортированных файлов
- -k — указать поле по которому нужно сортировать строки, если не задано, сортировка выполняется по всей строке.
- -f — использовать в качестве разделителя полей ваш символ вместо пробела.
Я понимаю, что многое из всего этого может быть непонятно, но на примерах все станет намного яснее.
Примеры использования sort
Наконец-то мы добрались к теме примеры sort Linux. Давайте сначала создадим файл с несколькими строками, на котором и будем проверять возможности утилиты.
computer
mouse
LAPTOP
data
RedHat
laptop
debian
laptop
Также можно воспользоваться вот такой командой:
echo -e «computer\nmouse\nLAPTOP\ndata\nRedHat\nlaptop\ndebian\nlaptop» > test.txt
Опция -e указывает команде, что нужно обрабатывать спецсимволы, а \n, если кто не знает, не что иное как спецсимвол перевода строки в Linux.
1. Сортировка
Теперь давайте выполним сортировку строк linux в нашем файле:
computer
data
debian
laptop
laptop
LAPTOP
mouse
RedHat
Вот несколько принципов, по которым команда sort linux сортирует строки:
- Строки с цифрами размещаются выше других строк
- Строки, начинающиеся с букв нижнего регистра размещаются выше
- Сортировка выполняется в соответствии алфавиту
- Строки сначала сортируются по алфавиту, а уже вторично по другим правилам.
2. Обратная сортировка
Отсортируем файл в обратном порядке:
RedHat
mouse
LAPTOP
laptop
laptop
debian
data
computer
3. Сортировка по колонке
Отсортируем вывод команды ls по девятой колонке, то есть по имени файла или папки. Колонку укажем опцией -k:
drwxr-xr-x 6 user user 4096 дек 6 14:29 Android
drwx—— 3 user user 4096 янв 14 22:18 Desktop
drwxr-xr-x 12 user user 4096 янв 14 21:49 Documents
drwx—— 5 user user 12288 янв 15 14:59 Downloads
drwxr-xr-x 7 user user 4096 янв 13 11:42 Lightworks
Сортировка вывода Linux выполняется так же просто как и строк из файла.
4. Сортировка по номеру
Отсортируем вывод команды ls по второй колонке. Для сортировки по числовому значению используется опция -n:
drwx—— 5 user user 12288 янв 15 14:59 Downloads
drwxr-xr-x 6 user user 4096 дек 6 14:29 Android
drwxr-xr-x 7 user user 4096 июн 10 2015 Sources
drwxr-xr-x 7 user user 4096 окт 31 15:08 VirtualBox
drwxr-xr-x 7 user user 4096 янв 13 11:42 Lightworks
drwxr-xr-x 8 user user 12288 янв 11 12:33 Pictures
5. Удаление дубликатов
Команда sort Linux позволяет не только сортировать строки, но и удалять дубликаты. Для этого есть опция -u:
computer
data
debian
laptop
LAPTOP
mouse
RedHat
Теперь строчка laptop не повторяется.
6. Сортировка по нескольким полям
Мы можем сортировать данные по нескольким полям. Например, отсортируем вывод ls по второму первично и вторично девятому полях:
drwxr-xr-x 2 seriyyy95 seriyyy95 4096 дек 6 14:32 Links
drwxr-xr-x 2 seriyyy95 seriyyy95 4096 янв 13 10:43 tmp
drwx—— 3 seriyyy95 seriyyy95 4096 янв 14 22:18 Desktop
drwxr-xr-x 3 seriyyy95 seriyyy95 4096 мар 28 2015 Журналы
drwx—— 4 seriyyy95 seriyyy95 12288 янв 15 15:42 Загрузки
Вот и все. Мы немного приоткрыли занавесу над возможностями сортировки строк linux с помощью команды sort. Если у вас остались вопросы — спрашивайте в комментариях!
Обнаружили ошибку в тексте? Сообщите мне об этом. Выделите текст с ошибкой и нажмите Ctrl+Enter.
Похожие записи
Оцените статью
Об авторе
Основатель и администратор сайта losst.ru, увлекаюсь открытым программным обеспечением и операционной системой Linux. В качестве основной ОС сейчас использую Ubuntu. Кроме Linux, интересуюсь всем, что связано с информационными технологиями и современной наукой.
6 комментариев к “Команда sort в Linux”
У вас в конце списка опций sort указана -f, а описание для неё взято от опции -t. Очепятка, однако 🙂 Ответить
Можно ли отобразить в одном столбце вывод команды full-upgrade? По умолчанию выводится список пакетов для обновления по строчно, что не очень удобно воспринимать. Ответить
Добрый день. Есть файлы:
1.txt
2.txt
3.txt
4.txt
5.txt
6.txt
7.txt
8.txt
9.txt
10.txt
11.txt
и так до, например, 1000. Отсортировать нужно по имени.
При использовании получается вот так:
53.ts 978.ts
530.ts 979.ts
531.ts 98.ts
532.ts 980.ts
533.ts 981.ts
534.ts 982.ts
535.ts 983.ts
536.ts 984.ts
537.ts 985.ts
538.ts 986.ts
539.ts 987.ts
54.ts 99.ts
540.ts input_list.txt
541.ts tsMuxeR
542.ts wget.list.m3u8
543.ts wget.log
544.ts Что мешает вам написать книгу.pdf
545.ts то есть 54.ts идет после 539.ts, но так не надо. Как отсортировать имена по порядку? PS ОС — Mac OS. Finder прекрасно сортирует так, как надо, но нужно вывод с путями к файлу положить в текстовый файл. Ответить
Добрый день! Точный ответ на Ваш вопрос даст man sort в Вашей ОС. Основываясь на материале статьи в cygwin провёл опыт:
ls -l | sort -n -k7
команда выше даёт сортировку списка файлов по столбцу даты — всё красиво.
Если поменять -k7 на -k9
, то будут отсортированы в порядке числовой нумерации в начале имён файлов. Ответить
Я как раз столкнулся с такой проблемой — названия директорий были в виде дат.
Решение вот такое :
ls | sort -t «.» -k2,5 -k9
20.10.2020
21.10.2020
22.10.2020
23.10.2020
24.10.2020 Ответить