русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Теоретические сведения


Дата добавления: 2014-11-28; просмотров: 761; Нарушение авторских прав


 

Программируя в Shell, иногда не хватает имеющихся средств стандартных команд и средств перенаправления данных для создания гибких условий поиска и обработки полученных результатов. Требуются принципиально новые условия создания запросов и новые средства обработки информации. Нам уже известно, что стандартными фильтрами для создания и обработки запросов являются такие команды как cat, sort, find, grep, egrep, frep, cmp, diff и некоторые другие. Однако их возможности ограничены либо работой самой команды, либо работой в составе опций. Что же делать, если требуется создать более гибкие условия поиска и обработки информации в Linux? На этот счет можно воспользоваться встроенной в Linux программной средой GAWK и ее предшественником AWK.

При форматировании отчетов и извлечении информации из больших текстовых фай­лов неоценимую помощь нам оказывает утилита gawk, снабженная мощными сред­ствами обработки текста. Основная задача утилиты gawk состоит в просмотре текстового файла или строки с целью нахождения в них информации, соответствующей заданному критерию отбора. Утилита имеет собственный язык программирования, поэтому ее мож­но назвать программируемым фильтром, настроенным на выполнение конкретной за­дачи. Фактически gawk выполняет две функции. С одной стороны, это фильтр, который можно вызвать из командной строки так же, как и любой другой фильтр. С другой стороны, gawk — это среда программирования, с помощью которой можно создавать другие фильтры.

Фильтры, создаваемые с применением языка программирования gawk, могут ис­пользоваться в среде любого интерпретатора Linux, в том числе shell, BASH и TCSH. Их задача заключается в считывании информации из источника данных, например текстового файла или стандартного потока ввода, изменении и анализе считанного, сохранении выходных данных. Результатом работы gawk, как правило, являются отре­дактированные входные данные. Вы можете дать ему указание считывать данные из файла, сортировать их в алфавитном порядке либо по номерам строк и направлять строки текста в выходной поток, как это делает фильтр sort, либо, подобно фильтру wc, считывать информацию из файла, подсчитывать количество слов и строк в тексте, а затем отображать полученные результаты. С помощью gawk вы можете выполнить поиск в файле информации, соответствующей заданному шаблону, после чего вывести найденные строки, то есть выполнять функции, присущие утилите фильтрации grep.



Язык программирования gawk позволяет пользователю не только разрабатывать соб­ственные фильтры, но и создавать команды Linux. С его помощью можно отображать строки вводимого текстового файла на экране (как в случае применения команды cat), выполнять поиск информации в файлах в соответствии с заданными шаблонами (как при использовании утилиты grep) и даже подсчитывать, сколько раз встречается опре­деленное слово в текстовом файле (возможности фильтра wc). В каждом из указанных случаев пользователь может добавить собственные функции, обеспечивающие фильт­рацию, например, задать отображение лишь части каждой строки, выполнение поиска по шаблону в указанном поле или подсчет слов, набранных только прописными буквами. Подобная гибкость дает возможность использовать gawk для создания отчетов, поиска за­данных текстовых фрагментов и выполнения вычислений на основе вводимых данных.

Утилиту gawk можно вызвать непосредственно из командной строки или из shell-сценария с помощью ключевого слова gawk. Такой сценарий часто рассматривают как новый фильтр. Фактически с помощью gawk вы можете определять собственные фильт­ры. В этом случае реализуются обе функции утилиты — и как фильтра, и как среды программирования. И обе они будут рассмотрены в настоящей главе: сначала мы изучим все возможности gawk как фильтра, а затем рассмотрим, как с ее помощью можно настроить свои фильтры.

Утилита gawk обладает гибким и сложным языком программирования и поддержи­вает команды, которые позволяют анализировать текст и выполнять расчеты. Можно также объявлять переменные и использовать их для управления процессом обработки строк. Многие операторы взяты из языка программирования С и имеют такой же син­таксис. Все это делает gawk очень мощным инструментом. Утилита gawk — это GNU-версия UNIX-утилиты awk, которая создавалась как стан­дартная утилита ОС UNIX (одним из ее создателей является Брайен Керниган, раз­работавший UNIX). Впоследствии была выпущена расширенная версия awk — nawk, предназначенная для обработки файлов. С помощью nawk можно обращаться к не­скольким файлам в одной программе. Утилита gawk представляет следующий этап раз­вития awk; в ней реализованы как возможности nawk, так и стандартные средства awk.

Команда gawk принимает в качестве аргументов инструкцию фильтра и список имен файлов. Инструкция заключается в одинарные кавычки и рассматривается как один аргумент. Она состоит из двух сегментов: шаблона и кода, задающего действие. Команды, определяющие действие, заключаются в фигурные скобки. Шаблонная часть уточняет, когда следует выполнять действие либо по отношению к каким входным данным оно должно производиться. Термин «шаблон» может ввести вас в заблуждение. Вероятно, более точно было бы назвать его условием. В утилите gawk имеется целый набор операций для построения сложных условий. Поиск по шаблону можно рассмат­ривать как условие поиска записей. Вместо простого сопоставления с шаблоном, как в случае с grep, пользователь задает условие. Записи, которые удовлетворяют этому условию, выбираются, и к ним применяются действия, указанные в соответствующем сегменте. Синтаксис инструкции таков: шаблон {действие}

Утилита gawk получает данные либо из файлов, либо со стандартного устройства ввода. Имена файлов можно указать в командной строке после инструкции. Если та­ковые не указаны, то входные данные берутся со стандартного устройства ввода. Вызов этой утилиты состоит из ключевого слова gawk, инструкции и имен файлов. Как и в фильтре sed, инструкция помещается в одинарные кавычки, чтобы shell ее не интер­претировал. Поскольку условие и действие рассматриваются утилитой gawk как единый аргумент, их нужно заключить в одну пару кавычек. Синтаксис команды gawk показан в следующем примере.

$ gawk 'шаблон {действие}' имена_файлов

Шаблон в инструкции можно рассматривать как прототип строки в файле. Указанное действие выполняется над этой строкой. В следующих двух примерах на экран выводятся все строки, содержащие слово Penguin. В сегменте «шаблон» необходимо задать поиск по шаблону, для чего шаблон выделяется символами косой черты. Выбираться будут все записи с этим шаблоном. Сегмент «действие» в первом примере содержит команду print, которая направляет строку на стандартное устройство вывода.

books

Tempest Shakespeare 15.75 Penguin Christmas Dickens 3.50 Academic

Iliad Homer 10.25 Random

Raven Рое 2.50 Penguin

$ gawk '/Penguin/{print}' books

Tempest Shakespeare 15.75 Penguin Raven Рое 2.50 Penguin

 

Во втором примере сегмента «действие» нет, поэтому применяется действие, задан­ное по умолчанию, то есть команда print.

$ gawk '/Penguin/' books

Tempest Shakespeare 15.75 Penguin Raven Рое 2.50 Penguin



<== предыдущая лекция | следующая лекция ==>
Файл – сценария. | Поиск по шаблону и специальные символы


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 3.932 сек.