Выбрать главу

11.1.2. Сохранение результатов сортировки

Чтобы сохранить результаты сортировки, укажите опцию -o и выходной файл. Можно также воспользоваться традиционным методом переадресации с помощью оператора >. В следующем примере результаты сортировки сохраняются в файле results.out

$ sort video.txt > results.out

11.1.3. Тестовый файл

Ниже приведен фрагмент файла video.txt, хранящего информацию из базы данных фирмы, которая занимается прокатом видеокассет. В перечень вошли видеокассеты, которые предлагались на протяжении последнего квартала. Поля файла имеют следующее назначение:

   1. Название фильма.

   2. Код фирмы–дистрибьютора.

   3. Количество заказов за последний квартал.

   4. Количество заказов за последний год.

$ cat video.txt

Boys in Company C:HK:192:2192 Alies:HK:119:1982

The Hilclass="underline" KL:63Yf972

Aliens:НК:532:4892

Star Wars:HK:301:4102

A Few Good Men:KL:445:5851

Toy Story:HK:239:3972

По умолчанию, команда sort предполагает, что разделителем полей служит один или несколько пробелов. Если же поля разделены иначе, следует применять опцию -t. В нашем файле разделителем является двоеточие. Поэтому в тех примерах, где это необходимо, задается опция -t:.

11.1.4. Индексация полей

При работе с командой sort не следует забывать, что команда обращается к первому полю как к полю 0, следующее поле имеет номер 1 и т. д. Если номера полей не указаны, вся строка считается единым полем. Обратимся к тестовому файлу и уточним, каким образом команда sort разбивает файл на поля:

Поле 0 Поле 1 Поле 2 Поле 3
Star Wars HK 301 4102
A Few Good Men KL 445 5851

11.1.5. Проверка факта сортировки файла

Каким образом можно узнать, отсортирован ли данный файл? Если он содержит, например, около 30 строк, то достаточно его просмотреть. А если в нем 400 строк? Примените команду sort -c, которая сама определит, отсортирован ли файл:

$ sort -с video.txt

sort: disorder on video.txt

Команда sort считает, что файл не отсортирован. Давайте отсортируем его и посмотрим, что будет:

$ sort video.txt | sort -c $

Сообщение не появилось, таким образом, файл является отсортированным.

11.1.6. Простейшая сортировка

В простейшем случае, чтобы отсортировать файл, достаточно передать его имя команде sort. Сортировка будет выполнена по строкам:

$ sort video.txt

A Few Good Men:KL:445:5851

A. Iien:HK:119:1982

Aliens:HK:532:4892

Boys in Company C:HK:192:2]92

Star Wars:HK:301:4102

The tfili:KL:63:2972

Toy Story. HK:239:3972

11.1.7. Сортировка а обратном порядке

Если необходимо отсортировать строки не по возрастанию, а по убыванию, задайте опцию -r:

$ sort -r video.txt

Toy Story:HK:239:3972

The H111:KL:63:2972

Star Wars:HK:301:4102

Boys in Company С:HK:192:2192

Aliens:HK:532:4892

Alien:HK:119:1982

A Few Good Men:KL:445:5851

11.1.8. Сортировка по заданному полю

В следующем примере файл сортируется по кодам фирм–дистрибьюторов. Поскольку требуемая информация находится во втором поле (ключ сортировки 1(, следует указать опцию +1. Кроме того, необходимо задать разделитель полей с помощью опции -t:, чтобы команда sort знала, как найти второе поле.