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


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


Листинг 6.3. Возможный результат использования утилиты od.

Полезная возможность - взглянуть на начало файла, чтобы понять, нуждается ли он в более детальном изучении. Эта возможность реализуется служебной программой head:

head [-n число] [файл ...]

Утилита head копирует на стандартный вывод указанное число (по умолчанию - 10) начальных строк исходных файлов (или весь файл, если он слишком короткий).

"Симметричная" служебная программа - tail

tail [-f] [-c число | -n число] [файл]

выдает на стандартный вывод конец исходного файла, начиная с указанного места. Если задана опция -c, единицей измерения является байт, если -n - строка. Числовой аргумент опции может быть задан со знаком; знак + означает, что отсчет байт (строк) идет от начала файла.

Опция -f полезна для слежения за растущими файлами, в которые пишет какой-либо другой процесс. При наличии этой опции утилита tail не завершается по достижении конца файла, но ждет появления новых данных и выводит их.

Рассмотрим примеры. Команда

tail -f f1

выдаст последние десять строк файла f1, за которыми последуют строки, добавленные к файлу f1 в промежуток времени между запуском и терминированием утилиты tail.

В качестве примера совместного использования служебных программ head и tail приведем фрагмент одного из командных файлов ОС Linux (см. пример 6.4).

echo "Reloading automounter: checking\ for changes ... " TMP=/var/run/autofs.tmp getmounts > $TMP for i in /var/run/autofs.*.pid do pid=`head -n 1 $i 2>/dev/null` [ "$pid" = "" ] && continue command=`tail -n +2 $i` if ! grep -q "^$command" $TMP then echo "Stopping automounter: $command" kill -USR2 $pid fi done rm -f $TMP

Листинг 6.4. Пример использования служебных программ head и tail.

Отметим, что здесь утилиты head и tail делят исходный файл "по-братски": первой достается первая строка, второй - все остальные.

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

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




Начало  Назад  Вперед



Книжный магазин