Команда ‘sort’ – это программа Linux, используемая для печати строк из входных текстовых фалов и объединения всех фалов в отсортированном порядке. Команда sort использует пробел как разделитель полей и всей входной файл как ключ для сортировки. Важно заметить, что команда sort не сортирует файлы на самом деле, а только печатает отсортированный вывод до тех пор, пока вы перенаправляете вывод .
Эта статья направлена на глубокое понимание команды Linux ‘sort‘ с 14 полезными практическими примерами, показывающими, как использовать команду sort в Linux.
1. Создание текстового файла с указанным содержимым
начала, мы создадим текстовый файл с именем ‘tecmint.txt‘, который будет использоваться для выполнения примеров команды ‘sort‘ в нашем рабочем каталоге для этого задания является ‘/home/$USER/Desktop/tecmint‘.
Параметр ‘-e
‘ в следующей команде включает интерпретацию обратной косые черты и /n
сообщает команде echo, чтобы записать каждую строку на новую строку.
echo -e "computer\nmouse\nLAPTOP\ndata\nRedHat\nlaptop\ndebian\nlaptop" > tecmint.txt
2. Просмотр содержимого файла
пред запуском команды ‘sort‘, посмотрим на содержимое файла и как оно выглядит с использованием следующей команды cat.
cat tecmint.txt
3. Сортировка содержимого файла
Команда “sort tecmint.txt” используется для перестановки строк в файле в порядке возрастания алфавита, если есть дублирующиеся строки, она сохранит одну копию каждой уникальной строки.
sort tecmint.txt
4. Перенаправление отсортированного вывода в новый файл
Следующая команда используется для сортировки строк текстового файла “tecmint.txt” в алфавитном порядке, а затем перенаправляет отсортированный вывод в новый файл с именем “sorted.txt“, что означает, что исходный файл остается неизменным, а отсортированное содержимое хранится в отдельном файле.
Чтобы проверить содержимое, используйте команду cat.
sort tecmint.txt > sorted.txt cat sorted.txt
5. Сортировка содержимого файла в обратном порядке
Следующая команда используется для сортировки строк текстового файла “tecmint.txt” в обратном порядке, что означает, что она будет располагать строки в порядке убывания алфавита, и отсортированный вывод затем перенаправляется в новый файл с именем “reversesorted.txt“
sort -r tecmint.txt > reversesorted.txt cat reversesorted.txt
6. Сохранение списка файлов и директорий
Следующая команда используется для вывода содержимого домашнего каталога пользователя (“/home/$USER“) в подробном, длинном формате с использованием команды ls, а затем перенаправляет этот список каталогов в текстовый файл с именем “lsl.txt“, расположенный на рабочем столе пользователя, в частности, в каталоге “tecmint“.
ls -l /home/$USER > /home/$USER/Desktop/tecmint/lsl.txt cat lsl.txt
Теперь мы рассмотрим примеры сортировки содержимого на основе полей, отличных от дефолтных начальных символов.
7. Сортировка ‘Содержимого файла на основе второго поля
Следующая команда используется для сортировки содержимого файла “lsl.txt” на основе значений во втором поле каждой строки. Опция '-n'
указывает на числовую сортировку, рассматривая второе поле как числа, а не текст.
Опция '-k2'
указывает, что мы хотим сортировать на основе второго поля. Выполнив эту команду, вы получите отсортированный список строк в “lsl.txt“, где критерием сортировки являются числовые значения во втором поле каждой строки.
sort -nk2 lsl.txt
8. Сортировка содержимого файла на основе девятого поля
Следующая команда используется для сортировки строк в файле “lsl.txt” на основе значений в девятом поле каждой строки в порядке возрастания. Опция '-k9'
указывает, что сортировка должна производиться на основе девятого поля.
sort -k9 lsl.txt
9. Сортировка файлов по размеру файла
Следующая команда объединяет команды ‘ls‘ и ‘sort‘ для вывода содержимого домашней директории пользователя в длинном формате списка, а затем передает список директории в 'sort -nk5'
, который сортирует список на основе значений в пятом столбце, который представляет размеры файлов.
ls -l /home/$USER | sort -nk5
10. Удаление дублирующихся строк в файле
Следующая команда сортирует строки в файле “tecmint.txt” в алфавитном порядке и удаляет любые дублирующиеся строки с использованием опции '-u'
, которая означает “уникальный”, и гарантирует, что уникальные строки сохраняются в отсортированном выводе.
$ cat tecmint.txt $ sort -u tecmint.txt
Правила до сих пор (что мы наблюдали):
- Строки, начинающиеся с чисел, предпочтительны в списке и находятся наверху до тех пор, пока не указаны иначе (
-r
). - Строки, начинающиеся со строчных букв, предпочтительны в списке и находятся наверху до тех пор, пока не указаны иначе (
-r
). - Содержимое перечисляется на основе встречаемости букв в словаре до тех пор, пока не указаны иначе (
-r
). - Команда sort по умолчанию рассматривает каждую строку как строку и затем сортирует ее в зависимости от встречаемости букв в словаре (Числовые предпочтения; см. правило – 1) до тех пор, пока не указаны иначе.
11. Перенаправление списка директории в файл
Следующая команда выводит содержимое домашнего каталога пользователя в длинном формате, включая скрытые файлы и каталоги, а затем перенаправляет список каталогов в текстовый файл с именем “lsla.txt“, расположенный на рабочем столе пользователя в каталоге “tecmint“.
ls -lA /home/$USER > /home/$USER/Desktop/tecmint/lsla.txt cat lsla.txt
Те, кто знаком с командой ls, понимают, что 'ls -lA'
эквивалентно 'ls -l'
плюс скрытые файлы. В результате большая часть содержимого этих двух команд будет одинаковой.
12. Сортировка содержимого файлов
Следующая команда сортирует содержимое двух текстовых файлов, ‘lsl.txt‘ и ‘lsla.txt‘, в алфавитном порядке по возрастанию и затем объединяет и отображает отсортированное содержимое в терминале.
$ sort lsl.txt lsla.txt
Обратите внимание на повторение файлов и папок.
13. Удаление дублирующихся строк в файле
Следующая команда объединяет и сортирует содержимое двух текстовых файлов, ‘lsl.txt‘ и ‘lsla.txt‘, в алфавитном порядке по возрастанию, удаляя любые дублирующиеся строки с использованием опции '-u'
, которая обеспечивает сохранение уникальных строк в отсортированном выводе.
$ sort -u lsl.txt lsla.txt
Обратите внимание, что дубликаты были опущены из вывода. Кроме того, вы можете сохранить вывод в новый файл, перенаправив его.
14. Сортировка вывода по нескольким полям с использованием пользовательского разделителя
Следующая команда объединяет команды ‘ls‘ и ‘sort‘ для вывода содержимого домашнего каталога пользователя в длинном формате, а затем перенаправляет список каталога на команду ‘sort‘, которая сортирует вывод на основе определенных столбцов и полей.
ls -l /home/$USER | sort -t "," -nk2,5 -k9
Вот разбор команды:
- <код>-t “,” – указывает, что запятая <код>(“,”) используется в качестве разделителя полей.
- <код>-nk2,5 – указывает сортировку по числовым значениям в столбцах с 2 по 5, которые обычно представляют детали разрешений и владения.
- <код>-k9 – дополнительно сортирует результат на основе девятого столбца, который представляет размеры файлов.
Это все на сегодня. В следующей статье мы рассмотрим более подробные примеры команды sort для вас.
Продолжайте делиться, комментировать, ставить лайки и помогать нам достичь более широкой аудитории.