Э. Сивер, С. Спейнауэр, С. Фиггинс, Дж. П. Хекман - Linux cправочник - 3-е издание, страница 103
Описание файла
PDF-файл из архива "Э. Сивер, С. Спейнауэр, С. Фиггинс, Дж. П. Хекман - Linux cправочник - 3-е издание", который расположен в категории "". Всё это находится в предмете "операционные системы" из 3 семестр, которые можно найти в файловом архиве МГУ им. Ломоносова. Не смотря на прямую связь этого архива с МГУ им. Ломоносова, его также можно найти и в других разделах. .
Просмотр PDF-файла онлайн
Текст 103 страницы из PDF
команды b и:). Если не задана метка label, выполняется переход к концусценария. Команда t подобна оператору выбора case языкаАлфавитный перечень команд sed711программирования С или сценариев интерпретатора. Выполняется поочередная проверка всех случаев (cases), и еслирезультат положительный, работа оператора прекращается.tПримерПредположим, требуется заполнить пустые поля базы данных. Имеются следующие записи:ID: 1 Name: greg Rate: 45ID: 2 llame: daleID: 3А вот что необходимо получить:ID: 1 Name: greg Rate: 45 Phone: ??ID: 2 Name: dale Rate: ?9 Phone: ?9ID: 3 Name: ?999 Rate: ?? Phone: ??Для этого следует выяснить количество уже заполненныхполей.
Посмотрите на сценарий, с помощью которого решается эта задача (поля разделены табуляцией):s/ID: .* Name: .* Rate . */& Phone: ??/pts/ID: .* Name: . */&Rate: ?? Phone: ??/pts/ID: . */&Name: ??[addressl[,address2]]v/Rate: ??Phone: ??/pfileДобавить содержимое пространства шаблонов в файл file.Это действие производится при выполнении команды, а непри выводе строк результата. Инструкцию и имя файла должен разделять только один пробел. Команда создает файл,если он еще не существует; а если файл существует, то егосодержание будет перезаписываться при каждом выполнении сценария.
Множественные команды записи, выводомдля которых служит один и тот же файл, добавляют данныев конец файла.Пример# Сохранить блоки tbl и eqn в файле:/-\.TS/,/-\.TE/w troff„stuff/"\.EQ/,/"\.EN/w troff_stuffw712Глава 12. Редактор sed[address I[,address2]]xОбмен содержимого пространства шаблонов и специальногобуфера. См. пример к описанию команды h.[address I[,address2]]y labclxyzlПреобразование символов. Вхождения символов а, Ъ и с заменяются, соответственно, на х, у и г.Пример» Изменить "item 1, 2, 3..." на "Item А, В, С ..."/"item [1-9]/y/123456789/ABCDEFGHI/Глава 13Язык сценариев gawkЯзык сценариев gawk является GNU-версией awk - мощного инструментадля обработки текстовых файлов при помощи шаблонов.
Файлы могут состоять из записей фиксированной или переменной длины. Границы записейобозначаются разделителем (по умолчанию это символ новой строки), gawkможет использоваться как из командной строки, так и в gawk-сценариях.Обычно эту программу можно вызвать, введя команду awk или gawk в командной строке интерпретатора.В этой главе рассмотрены следующие темы:••••••••Обзор возможностейСинтаксис командной строкиШаблоны и процедурыСистемные переменные gawkОператорыРабота с переменными и массивамиПеречень команд awk по группамАлфавитный перечень командБолее подробную информацию по этим темам можно найти во втором издании книги Дэйла Дауэрти (Dale Dougherty) и Арнольда Роббинса (ArnoldRobbins) «sed & awk» издательства O'Reilly.714Глава 13.
Язык сценариев gawkОбзор возможностейЯзык сценариев gawk позволяет:• С легкостью обрабатывать текстовый файл, как если бы он состоял из полей и записей текстовой базы данных• Использовать переменные для внесения изменений в базу данных•Выполнять команды интерпретатора из сценария• Выполнять арифметические и строковые операции• Использовать конструкции программирования, такие как циклы и условные операторы•Определять пользовательские функции•Обрабатывать вывод команд интерпретатора•Обрабатывать аргументы командной строки постепенно• Отображать оформленные отчетыСинтаксис командной строкиgawk можно вызвать двумя способами:gawk [options] 'script' var=value f i l e ( s )gawk [options] —( scriptfile var—value f i l e ( s )Вы можете задать все команды сценария прямо в командной строке или сохранить сценарий в файле scriptfile и указать его при помощи параметра —f.Допустимы множественные параметры -f. В случае указания несколькихфайлов их тексты объединяются.
Такая возможность полезна для включения библиотек.gawk работает с указанными исходными файлами (files). Если имена файловопущены (или задан параметр « —»), выполняется чтение со стандартноговвода.В командной строке переменным могут присваиваться значения. Значение(value) может быть строкой, переменной интерпретатора ($пате) или командной подстановкой ( v cmcT), но значение переменной становится доступным только после чтения первой строки ввода (т. е.
после оператора BEGIN).Чтобы вывести, к примеру, первые три поля файла паролей (поля разделяются двоеточием), можно использовать параметр —F для задания разделителя:gawk -F: '{print $1; print $2; print $3}' /etc/passwordНиже в разделе «Шаблоны и процедуры» приводятся многочисленныепримеры.Синтаксис командной строки715ПараметрыВсе параметры доступны как в традиционном однобуквенном варианте POSIX,так и з GNU-стиле (длинные имена).
Вот некоторые из них:— Все последующие строки являются командами или именами файлов, ане параметрами.—f script/He, —file=scriptfileЧитать команды gawk из файла scriptfile.—v var=value, —assign=var=ualueПрисвоить переменной var значение value. Параметр позволяет инициализировать переменные до начала работы сценария.-Fc, —field-separator=cСчитать символ с разделителем полей. Действие параметра идентичноинициализации переменной FS.
Параметр с может быть регулярным выражением. Каждая строка или запись разделяется на поля пробелами исимволами табуляции или другими символами, которые могут определяться пользователем. Поля записи адресуются переменным $1, $2, ...,$п. Переменная $0 содержит всю запись.—W optionПараметр —W специфичен для gawk и отсутствует в awk.
Альтернативный способ задания параметра: —option (например, —compat). Аргумент параметра (option) может быть одним из следующих:compatИдентично traditional,copyleftОтобразить информацию по лицензии General Public License и завершить работу.copyrightОтобразить информацию по вопросам обладания правами и завершитьработу.helpОтобразить справку по синтаксису и перечень параметров, а затем завершить работу.lintВыдавать предупреждение при использовании команд, которые могутоказаться непереносимыми на другие версии awk, либо команд, которые gawk считает неясными.lint-oldАналогично lint, но выполняется проверка соответствия более старымверсиям awk.716Глава 13. Язык сценариев gawkposixКоманды точно соответствуют стандарту POSIX.
Кроме того, игнорируются escape-последовательности вида \х, операторы ** и **=.re-intervalРазрешить использование диапазонов вида {п,т} в регулярных выражениях.source=scriptСчитать последовательность script сценарием gawk. Имеет сходство саргументом 'script', но source дает возможность комбинировать команды из файлов (задаваемых параметром —f командной строки) с командами, задаваемыми в командной строке.traditional.Работа в полном соответствии с традиционным (не-GNU) awk.usageИдентично help,versionОтобразить информацию о номере версии и завершить работу.Шаблоны и процедурыСценарий gawk состоит из шаблонов и процедур:pattern {procedure}Оба элемента являются необязательными.
Если отсутствует шаблон (pattern), процедура (procedure) применяется ко всем строкам. Если отсутствуетпроцедура, отображается строка, соответствующая шаблону. По умолчаниюкаждая строка ввода считается записью, но можно переопределить разделитель записей через переменную RS.ШаблоныШаблонами считаются конструкции вида:/regular expression/relational expressionpattern-matching expressionpattern,patternBEGINENDСуществуют некоторые правила, применяемые к шаблонам:• Выражение может<b>Текст обрезан, так как является слишком большим</b>.