Вступление
В этом руководстве я покажу вам, как сортировать данные в файлах с разделителями и из результатов других команд.
Вы не будете удивлены, узнав, что команда, которую вы используете для выполнения этой задачи, называется «sort». Все основные переключатели команды sort будут представлены в этой статье.
Пример данных
Данные в файле могут быть отсортированы до тех пор, пока они каким-то образом разделены.
Например, давайте возьмем финальную таблицу лиги из Шотландской премьер-лиги в прошлом году и сохраним данные в файле под названием «spl».
Вы можете создать файл данных следующим образом с одним клубом и данными для этого клуба, разделенными запятыми в каждой строке.
команда | Забитые голы | Цели против | Точки |
---|---|---|---|
кельтский | 93 | 31 | 86 |
Абердин | 62 | 48 | 71 |
Сердца | 59 | 40 | 65 |
St Johnstone | 58 | 55 | 56 |
Мазервел | 47 | 63 | 50 |
Росс | 55 | 61 | 48 |
плащ с капюшоном без рукавов | 54 | 48 | 52 |
Dundee | 53 | 57 | 48 |
Partick | 41 | 50 | 46 |
Гамильтон | 42 | 63 | 43 |
Килмарнок | 41 | 64 | 36 |
Данди Юнайтед | 45 | 70 | 28 |
Как сортировать данные в файлах
Из этого стола вы можете видеть, что Селтик выиграл лигу, а Данди Юнайтед - последним. Если вы поклонник Dundee United, вы можете почувствовать себя лучше, и вы можете сделать это, сортируя по забитым голам.
Для этого выполните следующую команду:
sort -k2 -t, spl
На этот раз заказ будет выглядеть следующим образом:
- Partick
- Килмарнок
- Гамильтон
- Данди Юнайтед
- Мазервел
- Dundee
- плащ с капюшоном без рукавов
- Росс
- St Johnstone
- Сердца
- Абердин
- кельтский
Причина, по которой результаты в этом порядке, состоит в том, что столбец 2 является столбцом, забитым головками, и сортировка идет от самого низкого до самого высокого.
Переключатель -k позволяет выбрать столбец для сортировки, а ключ -t позволяет выбрать разделитель.
Чтобы быть действительно счастливыми, поклонники Dundee United могут сортировать по столбцу 4, используя следующую команду:
sort -k4 -t, spl
Теперь Данди Юнайтед - вершина, а кельтская - внизу.
Конечно, это сделало бы как поклонников кельтов, так и Данди очень недовольными. Чтобы все было правильно, вы можете сортировать в обратном порядке, используя следующий переключатель:
sort -k4 -t, -r spl
А довольно странный коммутатор позволяет вам сортировать случайным образом, что на самом деле просто перебирает строки данных.
Вы можете сделать это, используя следующую команду:
sort -k4 -t, -R spl
Это может вызвать реальные проблемы, если вы перепутали свой -r и ваш ключ -R.
Команда sort также может сортировать даты в месячном порядке. Чтобы продемонстрировать, посмотрите следующую таблицу:
Месяц | Используемые данные |
---|---|
январь | 4G |
февраль | 3000K |
марш | 6000K |
апрель | 100M |
май | 5000M |
июнь | 200K |
июль | 4000K |
августейший | 2500K |
сентябрь | 3000K |
октября | 1000K |
ноябрь | 3G |
Декабрь | 2G |
В приведенной выше таблице представлен месяц года и объем данных, используемых на мобильном устройстве.
Вы можете сортировать даты по алфавиту, используя следующую команду:
sort -k1 -t, datausedlist
Вы также можете сортировать по месяцам, используя следующую команду:
sort -k1 -t, -M datausedlist
Теперь очевидно, что приведенная выше таблица уже показывает их в месячном порядке, но если список был случайным образом заполнен, это было бы простым способом их сортировки.
Глядя на второй столбец, вы можете видеть, что все значения находятся в человекообразном формате, который не похож на его легко сортировать, но команда sort может сортировать столбец данных, используя следующую команду:
sort -k2 -t, -h datausedlist
Как сортировать данные, переданные из других команд
Хотя сортировка данных в файлах полезна, команда сортировки также может использоваться для сортировки вывода из других команд:
Например, посмотрите на команду ls:
ls -lt
Вышеупомянутая команда возвращает каждый файл в виде строки данных со следующими полями, отображаемыми в столбцах:
- разрешений
- количество узлов
- имя пользователя
- имя группы
- размер
- дата последнего доступа
- имя файла
Вы можете отсортировать список по размеру файла, выполнив следующую команду:
ls -lt | sort -k5
Чтобы получить результаты в обратном порядке, вы должны использовать следующую команду:
ls -lt | sort -k5 -r
Команда sort также может использоваться совместно с командой ps, в которой перечислены процессы, запущенные в вашей системе.
Например, выполните следующую команду ps в вашей системе:
ps -eF
Вышеупомянутая команда возвращает много информации о процессах, выполняемых в настоящее время в вашей системе.
Один из этих столбцов - это размер, и вы можете увидеть, какие процессы являются самыми большими.
Для сортировки этих данных по размеру вы использовали бы следующую команду:
ps -eF | sort -k5
Резюме
Для команды sort не так много, но она может очень быстро пригодиться при сортировке вывода из других команд в значимый порядок, особенно когда команда не имеет доступных собственных переключателей сортировки.
Для получения дополнительной информации прочтите страницы руководства для команды сортировки.