В нашей последней статье мы рассмотрели различные примеры команды ‘sort‘. Если вы ее пропустили, вы можете ознакомиться, перейдя по ссылке ниже. В этом посте мы продолжим с того места, где закончили в предыдущей статье, чтобы рассмотреть оставшиеся аспекты команды. Таким образом, оба статьи вместе будут служить полным руководством по команде ‘sort‘ в Linux.
Прежде чем мы продолжим, создайте текстовый файл с именем ‘month.txt‘ и заполните его данными, предоставленными ниже.
echo -e "mar\ndec\noct\nsep\nfeb\naug" > month.txt cat month.txt
15. Сортировка содержимого файла по месяцам
Следующая команда сортирует содержимое файла “month.txt” в хронологическом порядке на основе аббревиатуры или названия месяца с использованием опции '-M'
, которая указывает команде ‘sort‘ обрабатывать данные как даты и сортировать их соответственно.
sort -M month.txt
16. Сортировка вывода по размеру файла в удобочитаемом формате
Следующая команда объединяет команды ‘ls‘ и ‘sort‘ для выполнения двух задач. Во-первых, она выводит содержимое домашнего каталога пользователя в длинном формате, а затем направляет это списание каталога в команду ‘sort‘ для вывода размеров файлов в удобочитаемом формате, что упрощает определение самых больших и самых маленьких файлов в каталоге.
ls -l /home/$USER | sort -h -k5
17. Проверка отсортированных файлов на согласованность
В предыдущей статье мы сгенерировали два текстовых файла: «sorted.txt» в примере номер 4 и «lsl.txt» в примере номер 6. Мы осведомлены о том, что «sorted.txt» уже отсортирован, в то время как «lsl.txt» нет.
Для проверки статуса сортировки обоих файлов мы воспользуемся командой «sort», которая позволит нам подтвердить, остаётся ли «sorted.txt» в правильном порядке и требуется ли сортировка для «lsl.txt».
sort -c sorted.txt
Если она вернёт 0, это означает, что файл отсортирован и конфликтов нет.
sort -c lsl.txt
18. Обработка разделителей при отсутствии пробелов в файле
Если разделитель (разделитель) между словами – это пробел, команда «sort» автоматически интерпретирует всё после горизонтального пробела как новое слово. Но что происходит, когда разделитель не является пробелом?
Рассмотрим текстовый файл, содержимое которого разделено чем угодно, кроме пробела, такого как '|'
или '\'
или '+'
или '.'
или ...</code.
Создайте текстовый файл, где содержимое разделено знаком +
. Используйте команду cat, чтобы проверить содержимое файла.
echo -e "21+linux+server+production\n11+debian+RedHat+CentOS\n131+Apache+Mysql+PHP\n7+Shell Scripting+python+perl\n111+postfix+exim+sendmail" > delimiter.txt
$ cat delimiter.txt
Теперь отсортируйте этот файл на основе 1-го поля, которое является числовым.
sort -t '+' -nk1 delimiter.txt
Второй основан на 4-м поле, которое не является числовым.
Если разделитель – Tab, вы можете использовать $'\t'
вместо '+'
, как показано в приведенном выше примере.
19. Случайная сортировка вывода по размеру файла
Сортируйте вывод команды ls -l для вашего домашнего каталога на основе пятого столбца, который представляет собой “количество данных”, в случайном порядке.
ls -l /home/avi/ | sort -k5 -R
Каждый раз, когда вы запускаете приведенный выше скрипт, вы скорее всего получите разный результат, так как результат генерируется случайным образом.
Как ясно из правила номер – 2 из последней статьи, команда sort предпочитает строки, начинающиеся с прописных букв, над строками, начинающимися с заглавных букв. Также см. пример 3 в последней статье, где строка ‘laptop‘ появляется перед строкой ‘LAPTOP‘.
20. Переопределение предпочтений сортировки по умолчанию
Как переопределить предпочтения сортировки по умолчанию? Прежде чем мы сможем переопределить предпочтения сортировки по умолчанию, нам нужно экспортировать переменную окружения 'LC_ALL'
в 'C'
.
Для этого выполните код ниже в вашем командном окне.
export LC_ALL=C
А затем отсортируйте текстовый файл ‘tecmint.txt‘, переопределив предпочтения сортировки по умолчанию.
$ sort tecmint.txt
Не забудьте сравнить вывод с тем, который вы получили в примере 3, и также вы можете использовать опцию ‘-f
‘ или ‘--ignore-case
‘, чтобы получить более организованный вывод.
$ sort -f tecmint.txt
21. Объединение двух входных файлов в одной операции
Как насчёт выполнения команды ‘sort‘ для двух входных файлов и их объединения за один проход?
Давайте создадим два текстовых файла, названных ‘file1.txt‘ и ‘file2.txt‘, и заполним их некоторыми данными. В ‘file1.txt‘ мы добавим числа, как показано ниже. Мы также используем команду cat для проверки содержимого файла
echo -e “5 Reliable\n2 Fast\n3 Secure\n1 open-source\n4 customizable” > file1.txt cat file1.txt
И заполним второй файл ‘file2.txt‘ некоторыми данными как.
echo -e “3 RedHat\n1 Debian\n5 Ubuntu\n2 Kali\n4 Fedora” > file2.txt cat file2.txt
Теперь отсортируем и объединим вывод обоих файлов.
join <(sort -n file1.txt) <(sort file2.txt)
Заключение
В заключение, в данной статье были рассмотрены различные аспекты команды ‘sort‘ в Linux. Мы начали с базовой сортировки по алфавитному порядку, затем перешли к сортировке по числовым значениям и датам, и даже коснулись настраиваемых разделителей. Мы также узнали, как переопределить предпочтения сортировки по умолчанию, чтобы соответствовать нашим потребностям.
Кроме того, мы обсудили техники проверки того, отсортирован ли файл, и объединения операций ‘sort‘ для нескольких входных файлов. С полученными знаниями у вас есть мощный инструмент для сортировки и организации данных эффективно в среде Linux.
Мы надеемся, что эта статья была содержательной и полезной для ваших усилий по работе в командной строке. Продолжайте исследовать, учиться и совершенствоваться в искусстве ‘sort‘ для улучшения ваших навыков в Linux.
Source:
https://www.tecmint.com/linux-sort-command-examples/