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

Заключение

< Лекция 13 || Лекция 14: 12345678910

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

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

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

Для просмотра нетекстовых файлов рекомендуется служебная программа od.

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

"Симметричная" служебная программа - tail - выдает на стандартный вывод конец исходного файла.

Служебная программа pr является фильтром для печати и оформления страниц.

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

Служебная программа sort в зависимости от заданных опций выполняет одно из трех возможных действий:

  • сортирует строки всех исходных файлов с записью результата в выходной файл ;
  • производит слияние всех исходных (предварительно отсортированных) файлов и записывает результат в выходной файл ;
  • проверяет, действительно ли отсортирован единственный исходный файл.

Утилита diff сравнивает содержимое исходных файлов и выдает на стандартный вывод список изменений, которые необходимо произвести, чтобы преобразовать один файл в другой.

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

Еще одним средством выявления различий (и совпадений) текстовых файлов является служебная программа comm.

Для контроля целостности файлов предназначена служебная программа cksum.

Понятие регулярного выражения (РВ) - одно из важнейших для программ обработки текстовых файлов. Согласно стандарту POSIX -2001, регулярное выражение - это шаблон, служащий для выборки определенных цепочек символов из множества подобных цепочек. Говорят, что выбранные цепочки удовлетворяют (успешно сопоставляются с) РВ.

Различают базовые (БРВ) и расширенные (РРВ) регулярные выражения.

Наиболее употребительной служебной программой, использующей механизм регулярных выражений, является grep.

В командных файлах обработка текстов часто производится потоковым редактором sed.

Еще одно популярное средство обработки текстовых файлов - служебная программа awk. Она выполняет программы, написанные на одноименном языке программирования.

На уровне функций работа с регулярными выражениями поддержана семейством regex: regcomp(), regexec(), regfree(), regerror().

Идейно простое, но весьма мощное и полезное средство обработки текстовых файлов - служебная программа преобразования символов tr.

Служебная программа uniq позволяет ужать подряд идущие одинаковые строки до одной.

Стандартом POSIX -2001 предусмотрены аналоги реляционных операций для текстовых файлов:

  • cut - выполняет операцию проекции отношения;
  • paste - осуществляет горизонтальное соединение ;
  • join - выдает на стандартный вывод результат соединения двух отношений.

Каталог также можно рассматривать как набор структурированных данных. Обработка каталогов начинается с их открытия. Для этого предназначена функция opendir().

После открытия текущим становится первый элемент каталога. Если в дальнейшем понадобится вновь позиционироваться на первый элемент, можно воспользоваться функцией rewinddir().

Чтение элементов каталога выполняет функция readdir().

После завершения работы с каталогом его следует закрыть с помощью функции closedir().

Нередко сочетаются чтение элементов каталога и сопоставление с шаблоном имен файлов. Подобное сопоставление реализует функция fnmatch().

Для генерации маршрутных имен, удовлетворяющих заданному шаблону, стандартом POSIX -2001 предусмотрена функция glob().

Выделение из маршрутного имени файла простого имени выполняет утилита basename. Маршрутный префикс выделяется служебной программой dirname.

< Лекция 13 || Лекция 14: 12345678910
Антон Коновалов
Антон Коновалов

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