Руководство
пользователя для GNU Awk
Arnold
D. Robbins
перевод
Балуева А. Н.
Оглавление
Предисловие
Эта
книга научит вас языку AWK и тому, как им эффективно пользоваться.
Вы должны предварительно быть знакомы с базисными системными
командами, с такими как cat и ls,1, и с основными средствами
оболочки, такими как перенаправление Input/Output (I/O) и
конвейерами (pipes). Реализации языка awk имеются для многих
различных окружений. Эта книга, описывая общие черты языка awk,
описывает также конкретную реализацию awk, называемую Gawk (что
является сокращением для "GNU Awk"). Gawk исполняется на
многих системах Unix, от 80386 PC-based компьютеров до large scale
systems, таких как Crays. Gawk перенесен также на MS-DOS и OS/2
PC's, на Atari и Amiga micro-computers, и на VMS.
История
awk и gawk
Название
awk произошло от инициалов егj создателей: Alfred V. Aho, Peter J.
Weinberger и Brian W. Kernighan. Начальная версия была описана в
1977г. в AT&T Bell Laboratories. В 1985 была создана более
мощная версия языка, вводящая определяемые пользователем функции,
кратные входные потоки и вычисляемые регулярные выражения. Это
новая версия стала доступной в Unix System V Release 3.1. В версии
System V Release 4 были добавлены некоторые новые свойства и
уточнены действия в "темных углах" языка. Спецификации
для awk в POSIX Command Language и Utilities standard еще больше
прояснили язык с помощью обратной связи с создателями gawk и с
первоначальными авторамии awk из Bell Labs.
Реализацию
GNU, т.е. gawk, написали в 1986г Paul Rubin и Jay Fenlason, с
помощью от Richard Stallman. John Woods также добавил части кода.
В 1988 и and 1989гг. David Trueman, с помощью Arnold Robbins,
полностью переработал gawk для совместимости с обновленным awk.
Текущее развитие языка фокусируется на исправлении ошибок,
улучшении производительности, стандартизации и иногда на
добавлении новых черт.
Проект
GNU и эта книга
Free
Software Foundation (FSF) есть бесприбыльная организация для
производства и распространения свободно распространяемого
программного обеспечения.
1
Эти команды доступны на системах, соответствующих POSIX, так же
как на традиционных, основанных на Unix системах. Если вы
пользуетесь какой-нибудь другой операционной системой, вам все
равно необходимо знакомство с идеями перенаправления I/O и с
конвейерами.
2
Эффективное программирование на AWK было основано Ричардом М.
Сталманом, автором оригинального редактора Emacs editor. GNU Emacs
есть наиболее широко используемая в настоящее время версия Emacs.
Проект
GNU представляет не прекращающиеся усилия со стороны Free Software
Foundation для создания полного, свободно распространяемого,
соответствующего POSIX вычислительного окружения. (GNU означает
"GNU's not Unix".) FSF использует "GNU General
Public License" (или GPL), чтобы обеспечить конечному
пользователю постоянный доступ к исходному коду их программного
обеспечения. Копия GPL включена для ваших ссылок (см. [GNU GENERAL
PUBLIC LICENSE], page 309). GPL прилагается к исходному коду на
языке Си для gawk.
Оболочка,
редактор (Emacs), легко переносимые оптимизирующие C, C++ и
Objective C-компиляторы, символьный отладчик и дюжины больших и
малых вспомогательных средств (таких как gawk), имеются и свободно
доступны. Что касается настоящего документа (начало 1997г.), то
ядро операционной системы GNU ( HURD) уже выпущено, но находится
еще в начальной стадии развития.
Пока
операционная система GNU не будет полностью доработана,
предполагается, что вы используете Linux, свободно
распространяемую Unix-подобную операционную систему для 80386, DEC
Alpha, Sun SPARC и других систем. Имеется много книг по Linux.
Одна свободно распространяемая есть Linux Installation and Getting
Started, автор Matt Welsh. Многие источники Linux свободно
доступны, часто в компьютерной памяти или на CD-ROM с книгами по
Linux. (Имеются три другие свободно доступные Unix-подобные
операционные системы для 80386 и других систем, NetBSD, FreeBSD и
OpenBSD. Все основаны на 4.4-Lite Berkeley Software Distribution,
и они используют последние версии gawk для своих версий awk.)
Эта
книга, которую вы читаете, теперь фактически свободна. Информация
из нее свободно доступна всем, машинно-читаемый исходный код книги
приходит с gawk, и каждый может взять эту книгу на копировальную
машину и сделать столько копий, сколько нужно. (Не забудьте
проверить разрешение на копии на странице Copyright.)
Если
платите деньги за эту книгу, то вы платите фактически только за
хорошую печать и обложку и издателю за его работу. Мы прилагаем
усилия, чтобы сделать эти платы разумными. Большинство клиентов
предпочтет иметь купленную книгу более чем в 330 страниц
фотокопированного текста пачке рассыпающихся листков (не говоря
уже о времени и труде, затраченными на копирование). То же самое
верно для получения книги из машинно-читаемого источника;
удержанная цена будет только немного больше цены за постраничную
печать на лазерном принтере.
Сама
это книга прошла через несколько предварительных изданий. Я начал
работать над предварительным отчетом руководства по GAWK Manual,
составленным Diane Close, Paul Rubin и Richard Stallman в конце
1988г. Он содержал примерно 90 страниц и коротко описывал
исходную, "старую" версию awk. После существенного
пересмотра первой версией руководства по GAWK стало издание 0.11
Beta в октябре 1989г. Следующее издание 0.13 вышло в декабре
1991г. К нему David Trueman, Pat Rankin и Michal Jaegermann
добавили несколько глав. Это новое издание было опубликовано в FSF
в виде книги в начале 1992г. После этог было несколько небольших
ревизий, затем издание 0.14, вышедшее в Ноябре 1992, было
опубликовано в FSF в Январе 1993г, и издание 0.16 вышло в Августе
1993г.
Издание
1.0 по Эффективному AWK-программированию представляет существенно
переработанное руководство по GAWK Manual, с многими
дополнительными материалами. FSF и я согласились, что теперь я
являюсь главным автором. Я также чувствую, что оно нуждается в
более содержательном названии. Эффективное AWK- программирование,
без сомнения, будет продолжать развиваться. Электронная версия
приходит с распространением gawk от FSF. Если вы обнаружите ошибку
в этой книге, пожалуйста сообщите о ней! См. раздел B.7
[Обнаруженные проблемы и ошибки], стр. 292. Соответствующую
информацию передавайте электронно или пишите для меня по адресу
FSF.
Благодарности
I
would like to acknowledge Richard M. Stallman, for his vision of a
better world, and for his courage in founding the FSF and starting
the GNU project. The initial draft of The GAWK Manual had the
following acknowledgements: Many people need to be thanked for
their assistance in producing this manual. Jay Fenlason
contributed many ideas and sample programs. Richard Mlynarik and
Robert Chassell gave helpful comments on drafts of this manual.
The paper A Supplemental Document for awk by John W. Pierce of the
Chemistry Department at UC San Diego, pinpointed several issues
relevant both to awk implementation and to this manual, that would
otherwise have escaped us.
The
following people provided many helpful comments on Edition 0.13 of
The GAWK Manual: Rick Adams, Michael Brennan, Rich Burridge, Diane
Close, Christopher ("Topher") Eliot, Michael Lijewski,
Pat Rankin, Miriam Robbins, and Michal Jaegermann.
The
following people provided many helpful comments for Edition 1.0 of
Effective AWK Programming: Karl Berry, Michael Brennan, Darrel
Hankerson, Michal Jaegermann, Michael Lijewski, and Miriam
Robbins. Pat Rankin, Michal Jaegermann, Darrel Hankerson and Scott
Deifik updated their respective sections for Edition 1.0. Robert
J. Chassell provided much valuable advice on the use of Texinfo.
He also deserves special thanks for convincing me not to title
this book How
4
Effective AWK Programming To Gawk Politely. Karl Berry helped
significantly with the TEX part of Texinfo. David Trueman deserves
special credit; he has done a yeoman job of evolving gawk so that
it performs well, and without bugs. Although he is no longer
involved with gawk, working with him on this project was a
significant pleasure.
Scott
Deifik, Darrel Hankerson, Kai Uwe Rommel, Pat Rankin, and Michal
Jaegermann (in no particular order) are long time members of the
gawk "crack portability team." Without their hard work
and help, gawk would not be nearly the fine program it is today.
It has been and continues to be a pleasure working with this team
of fine people. Jeffrey Friedl provided invaluable help in
tracking down a number of last minute problems with regular
expressions in gawk 3.0.
David
and I would like to thank Brian Kernighan of Bell Labs for
invaluable assistance during the testing and debugging of gawk,
and for help in clarifying numerous points about the language. We
could not have done nearly as good a job on either gawk or its
documentation without his help.
I
would like to thank Marshall and Elaine Hartholz of Seattle, and
Dr. Bert and Rita Schreiber of Detroit for large amounts of quiet
vacation time in their homes, which allowed me to make significant
progress on this book and on gawk itself. Phil Hughes of SSC
contributed in a very important way by loaning me his laptop Linux
system, not once, but twice, allowing me to do a lot of work while
away from home.
Finally,
I must thank my wonderful wife, Miriam, for her patience through
the many versions of this project, for her proof-reading, and for
sharing me with the computer. I would like to thank my parents for
their love, and for the grace with which they raised and educated
me. I also must acknowledge my gratitude to G-d, for the many
opportunities He has sent my way, as well as for the gifts He has
given me with which to take advantage of those opportunities.
Arnold Robbins Atlanta, Georgia February, 1997
|