Руководство пользователя для GNU Awk

Arnold D. Robbins
перевод Балуева А. Н.

1. Введение

Оглавление

Если вы подобны большинству компьютерных пользователей, вам часто нужно вносить изменения в различные текстовые файлы, содержащие определенные текстовые формы или извлекать данные из частей некоторых строк, не обращая внимание на остальное. Написать программу для этого на языке, подобном Си или Паскаль, довольно трудно, требует много времени и многих строк кода. Гораздо проще сделать это с помощью awk.

Аwk представляет собой специальный интерпретируемый язык программирования, позволяющий проделывать простые действия по преобразованию данных с помощью нескольких строк кода.

Реализация GNU средств awk носит название Gawk; она полностью совместима вверх с системой V Release версии 4 языка awk. Gawk также совместим вверх с спецификацией POSIX языка awk. Это означает, что все правильно написанные программы awk будут работать с gawk. Поэтому мы обычно не делаем различий между gawk и другими интерпретаторами awk.

С помощью  awk вы можете:
   управлять небольшими персональными базами данных,
   генерировать отчеты,
   обосновывать данные,
   строить индексы и производить другие работы с документами,
   и даже экспериментировать с алгорифмами, которые потом будут адаптированы
   к другим компьютерным языкам.	

1.1 Как пользоваться этой книгой

В начало страницы

Термин awk относится как к конкретной программе, так и к языку, которым вы пользуюетесь, чтобы сказать этой программе, что нужно делать. Когда мы хотим быть точными, мы называем программу "программа awk", а язык -- "язык awk." Термин gawk относится к версии awk, разработанной как часть проекта GNU. Цель настоящей книги --- описать как язык awk, так и правила исполнения программы awk.

Главное назначение книги ---- объяснить свойства awk согласно стандарту POSIX. Это делается в контексте одной из реализаций, а именно gawk. Делая это, мы также стараемся описать основные различия между gawk и другими реализациями awk. При этом мы отмечаем каждое свойство gawk, которого нет в стандарте POSIX для awk.

Перед книгой стоит трудная задача быть одновременно учебником и справочником. Если вы новичок, пропускайте детали, которые кажутся слишком сложными. Вы должны также игнорировать многочисленные перекрестные ссылки; они предназначены для опытного пользователя и для диалоговой версии документа. Термин программа awk относится к программе, написанной вами на языке awk.

См. Гл. 2 [Начала awk], стр. 9, о начальных сведениях по пользованию awk. Некоторые полезные "однострочечники" даны, чтобы вы почувствовали язык awk. (см. Гл. 3 [Полезные однострочные программы], стр. 21). Предлагаются многие примеры программ на awk (см. Гл. 15 [Библиотека финкций awk], стр. 169; см. также Гл. 16 [Практические программы на awk],стр. 205).

Краткое описание всего языка awk для быстрых справок приведено в Приложении А [Краткий обзор gawk], стро. 259. Заглядывайте туда, когда требуется освежить в памяти какое-нибудь свойство. Если вы наткнетесь на незнакомый термин, попробуйте найти его в глоссарии (см. Приложение D [Глоссарий], стр. 301).

В большинстве случаев в качестве примеров используются полные awk-программы. Только в некоторых наиболее сложных разделах приводятся части программ, иллюстрирующих описываемые понятия.

Хотя в целом книга предназначена для новичков в awk, в ней имеется много информации, которую найдут полезной для себя даже эксперты в awk. В частности, это описание POSIX awk и программы в Гл. 15 [Библиотека функций awk], стр. 169, и Гл. 16 [Практические программы awk], стр. 205.

Темные углы

"Кто открыл эти оконные ставни - Граф Дракула"

До появления POSIX standard (и руководства по Gawk Manual), многие черты awk были или плохо документированы или не документированы совсем. Описание таких свойств (часто называемых "темными углами") отмечены в книге как (d.c.)". Они также фигурируют в индексе под заголовком "темные углы."

1.2 Типографские соглашения

В начало страницы

Эта книга написана с помощью Texinfo, языка форматирования документов GNU. Единый Texinfo source file использован для производства печатной и диалоговой версий документов. Поэтому типографские соглашения слегка отличаются от обозначений в других книгах, которые вы могли прочесть.

Примеры, которые вы должны набирать в командной строке, предваряются обычными первичными и вторичными подсказками командного процессора (оболочки), `$' и `?'. Выход от команд предваряется комбинацией " a ". Обычно это стандартный ответ команды. Сообщения об ошибках предваряются текстом " error ".

Например:

$ echo hi on stdout
a hi on stdout
$ echo hello on stderr 1?&2 error hello on stderr

В тексте имена команд появляются в таком фонте, а в сегментах кода используется тот же фонт в кавычках, `подобно такому'. Некоторые вещи подчеркиваются, как это, и если предмет должен быть реализован строго, это указывается так. Первое вхождение нового термина обычно является его определением и фигурирует в том же фонте как и предшествующее слово "определение" в этом предложении. Имена файлов указываются подобно следующему: `/path/to/ourfile'. Символы, которые вы вводите через клавиатуру, выглядят так. В частности, имеются специальные символы, называемые "управляющими". Это такие символы, которые вы печатаете, нажимая и УПРАВЛЯЮЩУЮ клавишу и другую клавишу одновременно. Например, Control-d печатют, нажав сначала и удерживая нажатой CONTROL key, затем нажимая клавишу d, а потом отпускают обе клавиши.

1.3 Файлы с данными для примеров

В начало страницы

Многие примеры в этой книге имеют входной информацией два указанных ниже файла с данными. Первый называется `BBS-list'и представляет список на компьютерной доске объявлений систем вместе с информацией об этих системах. Второй файл данных, называемый `inventory-shipped', содержит информацию об морских отправлениях на каждый месяц. В обоих файлах каждая строка рассматривается как одна запись.

В файле `BBS-list' каждая запись содержит имя компьютерной доски объявлений, ее телефонный номер, скорость передачи в baud и код для указания ее операционных часов. `A' в последней колонке означает, что доска работает 24 часа в сутку. `B' в последней колонке означает, что доска работает только вечером и в выходные. `C' означает, что доска работает только в выходные.

aardvark 555-5553 1200/300 B
alpo-net 555-3412 2400/1200/300 A
barfly   555-7685 1200/300 A
bites    555-1675 2400/1200/300 A
camelot  555-0542 300 C
core     555-2912 1200/300 C
fooey    555-1234 2400/1200/300 B
foot     555-6699 1200/300 B
macfoo   555-6480 1200/300 A
sdace    555-3430 2400/1200/300 A
sabafoo  555-2127 1200/300 C

Второй файл, называемый `inventory-shipped', несет информацию о морских перевозках в течение года. Каждая запись соответствует одному месяцу года и содержит количества отправленных зеленых связок, красных ящиков, мешков с апельсинами и голубых пакетов соответственно. Имеются 16 записей для 12 месяцев одного года и четырех месяцев следующего.

Jan 13 25 15 115 Feb 15 32 24 226 Mar 15 24 34 228 Apr 31 52 63 420
May 16 34 29 208 Jun 31 42 75 492 Jul 24 34 67 436 Aug 15 34 47 316
Sep 13 55 37 277 Oct 29 54 68 525 Nov 20 87 82 577 Dec 17 35 61 401
Jan 21 36 64 620 Feb 26 58 80 652 Mar 24 75 70 495 Apr 21 70 74 514
В начало страницы

<<< Оглавление Страницы: 1  2 >>>