Skip to main content

Как сортировать данные в файле с помощью Linux

Программирование на Си урок 37: Работа с файлами в языке Си (Апрель 2025)

Программирование на Си урок 37: Работа с файлами в языке Си (Апрель 2025)
Anonim

Вступление

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

Вы не будете удивлены, узнав, что команда, которую вы используете для выполнения этой задачи, называется «sort». Все основные переключатели команды sort будут представлены в этой статье.

Пример данных

Данные в файле могут быть отсортированы до тех пор, пока они каким-то образом разделены.

Например, давайте возьмем финальную таблицу лиги из Шотландской премьер-лиги в прошлом году и сохраним данные в файле под названием «spl».

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

командаЗабитые голыЦели противТочки
кельтский933186
Абердин624871
Сердца594065
St Johnstone585556
Мазервел476350
Росс556148
плащ с капюшоном без рукавов544852
Dundee535748
Partick415046
Гамильтон426343
Килмарнок416436
Данди Юнайтед457028

Как сортировать данные в файлах

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

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