Опубликован: 15.06.2004 | Доступ: свободный | Студентов: 2557 / 712 | Оценка: 4.35 / 3.96 | Длительность: 27:47:00
ISBN: 978-5-9556-0011-6
Лекция 6:

Средства обработки структурированных данных

Служебная программа pr

pr [+номер_страницы] [-число_столбцов] 
[-adFmrt] [-e[символ][число]]
[-h заголовок] [-i[символ][число]] 
[-l число_строк] [-n[символ][ширина]]
[-o отступ] [-s[символ]] [-w ширина] 
[файл ...]

является фильтром для печати и оформления страниц. По умолчанию выдача разбивается на страницы, каждая из которых содержит в пятистрочном заголовке свой номер, дату, время и имя файла. Длина страницы 66 строк, включая пять пустых строк хвостовика.

Утилита pr обрабатывает следующие аргументы командной строки.

+номер_страницы

Начать вывод со страницы с заданным номером (по умолчанию с первой).

-число_столбцов

Вывод в заданное число столбцов (по умолчанию в один). При выводе в несколько столбцов автоматически действуют опции -e и -i. Этот аргумент несовместим с опцией -m.

-a

Выдача в несколько столбцов с упорядочением по строкам. Например, если заказана печать в два столбца, первая исходная строка попадает в первый столбец, вторая - во второй, третья - снова в первый и т.п.

-d

Выдача через строку.

-e[символ][число]

Установка табуляции через заданное число позиций, начиная с первой. Символы табуляции во входном файле развертываются в соответствующее количество пробелов. Если задан любой нецифровой символ, он трактуется как символ табуляции во входном файле.

-F

Применять символы перехода к новой странице (по умолчанию переход на новую страницу осуществляется при помощи последовательности переводов строк).

-h заголовок

Использовать заданный заголовок (по умолчанию в качестве заголовка выступает имя исходного файла).

-i[символ][число]

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

-l число_строк

Установка длины страницы (по умолчанию 66 строк).

-m

Слияние и печать всех файлов параллельно, по одному в столбце. Реализация должна поддерживать слияние по крайней мере девяти файлов.

-n[символ][ширина]

Производится нумерация строк. Под номер отводится поле заданной ширины (по умолчанию - 5). Если задан любой нецифровой символ, то он присоединяется к номеру строки, отделяя ее от последующего текста (подразумеваемым значением является символ табуляции).

-o отступ

Установка отступа слева на заданное число позиций. Количество позиций в каждой строке есть сумма ширины и отступа.

-p

Пауза перед выдачей каждой страницы, если вывод назначен на терминал ( pr включит звонок и будет ждать нажатия клавиши возврата каретки).

-r

Подавление диагностических сообщений при ошибках открытия файлов.

-s[символ]

Разделение столбцов единственным символом (по умолчанию - табуляцией), а не соответствующим количеством пробелов.

-t

Подавление выдачи пятистрочного идентифицирующего заголовка и такого же размера хвостовика, сопровождающих обычно каждую страницу.

-w ширина

Установка ширины строки (по умолчанию - 72 позиции). Эта опция действует только при печати в несколько столбцов.

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

ls -a | pr -2 -a -l 24 -n' '3 -h "Список\
файлов каталога $(pwd)"

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

2003-10-17 17:24 Список файлов каталога
/var/tmp Page 1
1 . 2 ..
3 Blank.ReS 4 Make45.ReS
5 Make46.ReS 6 from_cvs
7 gcc-20032204 8 gcc-3.4-16-jun-2003
9 htdocs 10 rpm-tmp.29785
. . .
Листинг 6.5. Начальный фрагмент возможного результата работы служебной программы pr.

Для подсчета числа символов, слов и строк в файлах служит утилита wc:

wc [-c | -m] [-w] [-l] файл ...

Опция -c предписывает подсчитывать байты, -m - символы, -w - слова, -l - строки. По умолчанию подсчитываются символы, слова и строки. Если в командной строке задано несколько файлов, помимо результатов для каждого из них выводятся также суммарные показатели.

Рассмотрим пример. Предположим, что результаты, показанные в листинге 6.3, сохранены в файле ascii.od. Тогда команда, приведенная в листинге 6.6, выдаст результат, показанный в листинге 6.7.

wc ascii.od
Листинг 6.6. Пример использования утилиты wc.
9 137 575 ascii.od
Листинг 6.7. Возможный результат использования утилиты wc.

Иными словами, в указанном файле 575 символов, 137 слов, расположенных на 9 строках.

Антон Коновалов
Антон Коновалов

В настоящее время актуальный стандарт - это POSIX 2008 и его дополнение POSIX 1003.13
Планируется ли актуализация материалов данного очень полезного курса?