Программирование в стандарте POSIX



         

Простейшие средства обработки текстовых файлов - часть 7


-r

Заменить результат сравнения на противоположный.

Следующие опции изменяют трактовку разделителей полей.

-b

Игнорировать начальные пробельные символы при определении начала и конца ключей сортировки. Если опция -b указана перед первой опцией -k, она воздействует на все ключи, снабженные опцией -k.

-t символ

Использовать заданный символ как разделитель полей. Разделитель не является частью поля (хотя и может входить в ключ сортировки). Каждое вхождение разделителя значимо, т. е. два рядом стоящих разделителя ограничивают пустое поле. В отсутствие опции -t подразумеваемыми разделителями становятся пробельные символы, точнее, максимальная непустая последовательность таких символов, а в поле включаются предшествующие ему разделители.

Ключи сортировки определяются с помощью опции -k. Определение ключа имеет следующий формат:

начало_поля[тип][,конец_поля[тип]]

Ключевое поле охватывает все позиции - от начальной до конечной, которые задаются, соответственно, как

номер_поля[.первый_символ] номер_поля[.последний_символ]

Тип - это один из модификаторов b, d, f, i, n, r. Модификатор b ведет себя аналогично опции -b, но применяется только к той границе ключа, после которой он указан. Остальные модификаторы также аналогичны одноименным опциям, но воздействуют на ключ в целом.

Если указано несколько ключей сортировки (согласно стандарту, реализацией должно поддерживаться по крайней мере девять вхождений опции -k), то более поздние используются только в случае равенства более ранних. Если значения ключей сортировки двух строк совпадают, строки упорядочиваются с учетом всех символов.

Приведем примеры использования служебной программы sort. Автор хранит данные о собственном кровяном давлении в виде файла pp.txt, содержащего пять столбцов: дата, время, верхнее давление, нижнее давление, пульс (см. пример 6.8). Естественно, строки добавляются к файлу в хронологическом порядке. Чтобы упорядочить их по убыванию верхнего давления (третий столбец), можно воспользоваться командой, показанной в пример 6.9.


Содержание  Назад  Вперед