4.5 Хорошие файлы и хорошие фильтры

4.5 Хорошие файлы и хорошие фильтры

Несмотря на то что в качестве примеров использования языка awk приводились независимые программы, в большинстве случаев его применяют для написания простых программ в одну или две строки, являющихся фильтрами в больших конвейерах. Это справедливо для большинства фильтров: редко поставленная задача может быть решена с помощью одного фильтра, чаще она разбивается на подзадачи, где фигурируют несколько фильтров, объединенных в конвейер. Такую реализацию программных компонентов называют основным принципом организации программного мира UNIX. Фильтры буквально "пронизывают" всю систему, и очень важно понимать причины этого.

Программы UNIX выдают выходной поток в таком формате, что его можно использовать в качестве входного потока для других программ. Файлы, пропускаемые через фильтр, состоят из строк текста, свободных от декоративных заголовков, завершителей или пустых строк. Каждая строка представляет интерес — это имя файла, слово, описатель выполняемого процесса, поэтому программы типа wc или grep могут рассчитывать определенные характеристики объектов или искать их по именам. Если о каждом объекте имеется большая информация, файл все равно состоит из строк, разбиваемых на поля пробелами или символами табуляции, как в выводе команды ls -l. Располагая данными, разбитыми на такие поля, программы типа awk могут легко выбрать, обработать или переупорядочить информацию.

Фильтры построены по общей схеме. Каждый из них пишет в стандартный выходной поток результат обработки файлов-аргументов или стандартного выходного потока, если аргументов нет. Аргументы задают входной поток и никогда не задают выходной[11] , поэтому выходной поток команда всегда может передать в конвейер. Необязательные аргументы (или аргументы, не являющиеся файлами, такие, как шаблон в команде grep) задаются перед именем файлов. Наконец, сообщения об ошибках пишутся в стандартный поток диагностики, поэтому они не могут исчезнуть в конвейере.

Эти соглашения не оказывают большого влияния на программы пользователя, но единообразное применение их ко всем программам обеспечивает простоту взаимодействия, что подтверждается многочисленными примерами на протяжении всей книги и наиболее наглядно продемонстрировано программой подсчета слов в конце разд. 4.2. Если каким-либо программам потребуется входной или выходной файл с конкретным именем, определенное обращение для спецификации параметров или создание заголовков и завершений, то схема конвейера работать не будет. И конечно, если бы система UNIX не предоставляла программные каналы, кому-то пришлось создать подобное стандартное средство. Однако программные каналы есть, и конвейеры работают. Их даже можно запрограммировать, но для этого вы должны знать возможности системы.

Упражнение 4.15

Команда ps выдает поясняющий заголовок, а команда ls -l сообщает общее число блоков файла. Прокомментируйте действие команд.

Историческая и библиографическая справка

Хороший обзор алгоритмов сопоставления шаблонов дается в статье Э. Ахо, создателя команды egrep, "Pattern matching in strings" (Proceedings of the Symposium on Formal Language Theory, Santa Barbara, 1979). Редактор sed разработан и реализован на базе редактора ed Л. Мак-Махоном. Язык awk был разработан и реализован Э. Ахо, П. Вайнбергером и Б. Керниганом, но это решение не очень элегантно. К тому же выбор названия языка по первым буквам имен создателей представляется не вполне удачным. Проект обсуждался в статье авторов "AWK — а pattern scanning and processing language" (Software-Practice and Experience, July, 1978). Язык awk имеет несколько источников, но, безусловно, некоторые идеи заимствованы из языка Снобол4, редактора sed, языка проверки условий, разработанного М. Рочкиндом, языковых средств yacc и lex и, конечно, языка Си. В действительности сходство между awk и Си порождает ряд проблем. Язык подобен Си, но они не совпадают: одни конструкции в awk отсутствуют, другие отличаются от соответствующих конструкций Си неочевидным образом.

В статье Д. Комера "The flat file system FFG: a database system consisting of primitives". (Software — Practice and Experience, Nov., 1982) обсуждается использование интерпретатора и awk для создания системной базы данных.

Данный текст является ознакомительным фрагментом.



Поделитесь на страничке

Похожие главы из других книг:

Хорошие хакеры

Из книги автора

Хорошие хакеры Хорошие («белые») хакеры – это именно те пользователи, благодаря которым и происходит прогресс в области компьютерных технологий. Это современные Ньютоны и Фарадеи, Энштейны и Менделеевы, Эдисоны и Поповы. Живя с ними в одно время, мы не знаем о них


5.5.3 Фильтры

Из книги автора

5.5.3 Фильтры Последний из приведенных выше примеров (с командой grep) можно использовать для иллюстрации еще одного важного понятия, а именно, программы-фильтра. Фильтры - это команды (или программы), которые воспринимают входной поток данных, производят над ним некоторые


9.6.4. Фильтры

Из книги автора

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


4.3.1. Спам-фильтры

Из книги автора

4.3.1. Спам-фильтры Например, довольно мощный спам-фильтр установлен на почтовом сервисе Mail.ru. Всю сомнительную (похожую на спам) корреспонденцию он помещает в папку Спам (рис. 4.1). Раньше она так и называлась – Сомнительные. Бывает, что этот фильтр иногда ошибается и


Фильтры

Из книги автора

Фильтры Где содержится информация для почтовых фильтров программы Outlook Express (список блокированных отправителей и правила для почты)? Когда накоплен список из нескольких сотен всяческих правил и адресатов, задаешься вопросом, как его сохранить при переустановке системы.


Фильтры

Из книги автора

Фильтры Кроме описанных эффектов, в подменю Effects имеются пункты, содержащие, в свою очередь, несколько подпунктов.С помощью подменю Filters (Фильтры) вы можете воспользоваться девятью фильтрами. Рассмотрим для примера работу с фильтром FFT.Выполните команду Effects ? Filters ? FFT Filter


Сторонние фильтры

Из книги автора

Сторонние фильтры Не забывайте про возможность установки дополнительных фильтров. В программу Photoshop можно установить практически неограниченное количество фильтров сторонних производителей, однако учтите, что, чем больше фильтров содержится в папке Plug-Ins, тем дольше


Координатные фильтры

Из книги автора

Координатные фильтры Координатные фильтры предназначены для указания координат комбинированным способом – выбирая точки с помощью перекрестья на чертеже и вводя недостающие координаты с клавиатуры. Существуют следующие фильтры точек:.X, Y, Z, XY, YZ и. XZ. Например, запись.


Фильтры размытия

Из книги автора

Фильтры размытия Группа фильтров Blur (Размытие) содержит фильтры, позволяющие размывать изображение (рис. 7.15). Рис. 7.15. Группа фильтров Blur (Размытие)Размытие чаще всего применяется в случаях, когда необходимо скрыть различные пятна и трещинки на изображении, сделать их


Фильтры пикселей

Из книги автора

Фильтры пикселей Фильтры Pixelate (Пиксели) позволяют обрабатывать пиксели, формирующие изображение, таким образом, что они объединяются в более крупные элементы, тем самым имитируя разнообразные эффекты.Совокупность данных фильтров находится в группе Pixelate выпадающего


Исходные файлы и выполняемые файлы

Из книги автора

Исходные файлы и выполняемые файлы Наша замечательная программа, несмотря на свою лаконичность и простоту, для компьютера является совершенно бессмысленным набором символов, так как он "не понимает" директив типа #include или printf. Он понимает только специальный язык,


14.7. Фильтры

Из книги автора

14.7. Фильтры Excel позволяет устанавливать фильтры для списков, например, вы можете отфильтровать список согласно определенному условию. Скажем, выбрать, у кого из сотрудников зарплата больше 500 условных единиц. Сейчас мы будем работать с фильтрами. Добавьте в наш список еще


Фильтры

Из книги автора

Фильтры Фильтры Flash 8 позволяют применить к фрагменту изображения такие эффекты, как отбрасывание тени, "выдавливание", иллюзию тления и пр. Сейчас мы рассмотрим, как все это делается.Сразу же нужно сказать вот что. Фильтры могут быть применены не ко всем фрагментам


ПИСЬМОНОСЕЦ: Знаменитые и хорошие инициалы

Из книги автора

ПИСЬМОНОСЕЦ: Знаменитые и хорошие инициалы Автор: Владимир ГуриевАх-ах! Бедные водители маршруток! Для вас всё - и даже удобнейшие подсказки прямо с мобильника, как собрать на линии побольше денег ("КТ" #707)!Конечно, понятно, что уважаемое государство и дальше старается