Шрифт:
– t
Задание разделителя полей
– r
Сортировка в обратном порядке
+поз1[-поз2]
Ключом сортировки становится строка, начинающаяся в позиции
поз1 и заканчивающаяся перед позицией поз2 (или в конце текущей строки, если второй параметр не указан)*; номера полей и позиции начальных символов отсчитываются от нуля
– k поз1[, поз2]
Ключом сортировки становится строка, начинающаяся в позиции
поз1 и заканчивающаяся в позиции поз2 (или в конце текущей строки, если второй параметр не указан)
[2]
; номера полей и позиции начальных символов отсчитываются от единицы
– n
Поле с номером я не должно сортироваться; значение n отсчитывается от нуля
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 Hill: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