Главная » Программирование для UNIX » Фильтры UNIX

0

Существует большое семейство программ для  UNIX, вводящих неко торые  данные, выполняющих простые преобразования и что-либо выводящих. Примером могут служить grep и tail для  выбора данных из входного потока, sort для  их сортировки, wc для  подсчета и т. д. Такие программы называются фильтрами.

В этой  главе мы  рассмотрим наиболее часто  используемые фильтры. Начнем с grep и попробуем применить более сложные шаблоны, чем в главе 1.  Познакомимся также с  двумя другими  членами  семейства grep: egrep и fgrep.

В последующих разделах кратко описаны несколько других полезных фильтров, в том числе  tr для подстановки символов (транслитерации), dd для  использования  данных, полученных из  других систем, и  uniq для   поиска повторяющихся  текстовых  строк.  Команда sort  также рассмотрена более подробно, нежели в главе 1.

Оставшаяся часть  главы посвящена двум универсальным «преобразователям  данных», или   «программируемым  фильтрам»,  названным так  за то, что для описания правил преобразования данных в них  используется простой язык  программирования. Разные правила  могут давать очень  разные результаты.

Это программы sed  (stream editor – потоковый редактор) и awk, названная в честь своих авторов. Обе они получены обобщением команды grep:

$ program шаблон5действие имена5файлов …

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

дакторе ed,  а действием по умолчанию –  вывод  строк,  соответствующих образцу.

Программы sed и awk обобщают понятия образца и действия, в частности sed, будучи производной от ed, выполняет «программу», составленную из команд редактора над каждой строкой, полученной из входных файлов. Программа awk не так  удобна  для  текстовых подстановок, как sed,  зато  она  поддерживает  арифметические операции, переменные, встроенные функции и язык программирования, весьма напоминающий  Си.  Данная глава не  содержит  исчерпывающего  описания этих  программ; оно  есть  в  томе  2В  справочного руководства  по  системе UNIX  (см. http://cm.bell5labs.com/7thEdMan/).

Источник: Керниган Б., Пайк Р., UNIX. Программное окружение. – Пер. с англ. – СПб: Символ-Плюс, 2003. – 416 с., ил.

По теме:

  • Комментарии