1 авг. 2008 г.

sort: Сортировка содержимого файла

Ниже представлен синтаксис этой можно утилиты для сортировки[16]:
sort [опции] [файл(ы)]
Давайте отсортируем часть файла /etc/passwd. Как видите сам по себе этот файл не отсортирован:

$ cat /etc/passwd
Если нам нужно отсортировать его по полю login, мы набираем:

$ sort /etc/passwd
По умолчанию команда sort сортирует информацию по первому полю в порядке возрастания (в нашем случае по полю login). Если нам нужно отсортировать данные в порядке убывания, мы используем опцию -r:

$ sort -r /etc/passwd

Для каждого пользователья имеется свой собственный UID, записанный в файле /etc/passwd. Давайте отсортируем этот файл в порядке возрастания по полю UID:

$ sort /etc/passwd -t":" -k3 -n
Здесь мы используем следующие опции sort:
  • -t":": сообщает sort'у, что разделителем полей является символ ":";
  • -k3: означает, что сортировка должна быть выполнена по по третьему столбцу;
  • -n: сообщает, что выполняется сортировка числовых данных, а не буквенных.
То же самое может быть выполнено в обратном порядке:
$ sort /etc/passwd -t":" -k3 -n -r
Обратите внимание, что sort обладает двумя важными опциями:
  • -u: строгая сортировка: исключаются повторяющиеся поля сортировки;
  • -f: игнорирование регистра (строчные символы обрабатываются так же, как и прописные).
И в заключение, если нам нужно найти пользователя с наивысшим UID, мы можем воспользоваться этой командой:
$ sort /etc/passwd -t":" -k3 -n |tail -n1
, где мы сортируем файл /etc/passwd в порядке возрастания по столбцу UID и прогоняем результат по каналу через команду tail, которая выводит первое значение из отсортированного списка.

Комментариев нет: