%& -translate-file=il2-pl \def\fontprefix{pl} \input texinfo
"To boldly go where no man has gone before" is a
Registered Trademark of Paramount Pictures Corporation.
Copyright (C) 1989, 1991, 1992, 1993, 1996-2000
Free Software Foundation, Inc.
Tytuł oryginalny: Effective AWK Programming.
To jest wydanie 1.0.6 książki Efektywne programowanie w AWK;
opisuje wersję 3.0.6 (lub późniejszą)
AWK w implementacji GNU.
Opublikowana przez:
Free Software Foundation
59 Temple Place -- Suite 330
Boston, MA 02111-1307 USA
Telefon: +1-617-542-5942
Fax: +1-617-542-2652
Email: gnu@gnu.org
URL: http://www.gnu.org/
ISBN 1-882114-26-4
Permission is granted to make and distribute verbatim copies of this manual provided the copyright notice and this permission notice are preserved on all copies.
Permission is granted to copy and distribute modified versions of this manual under the conditions for verbatim copying, provided that the entire resulting derived work is distributed under the terms of a permission notice identical to this one.
Permission is granted to copy and distribute translations of this manual into another language, under the above conditions for modified versions, except that this permission notice may be stated in a translation approved by the Foundation.
Ilustracja na okładce: Etienne Suvasa.
Miriam, za dopełnianie mnie.
Chanie, za radość jaką nam przyniosłaś.
Ryfce, za wykładniczy wzrost.
Nachumowi, za dodany wymiar.
Malce, za nowy początek.
Niniejsza książka uczy języka awk i jego efektywnego wykorzystania.
Powinieneś być już zaznajomiony z podstawowymi poleceniami systemu poleceń,
jak cat i ls,(1) oraz podstawowymi
możliwościami powłoki, jak przekierowanie wejścia/wyjścia i potoki.
Implementacje języka awk dostępne są dla wielu różnych
środowisk obliczeniowych. Niniejsza książka, mimo iż opisuje ogólnie język,
omawia także konkretną implementację awk o nazwie gawk
(co oznacza "GNU Awk"). gawk działa na szerokim spektrum systemów
uniksowych, począwszy od komputerów PC opartych na 80386, po wielkoskalowe
systemy, jak maszyny Cray.
gawk przeniesiono również na MS-DOS i OS/2 z PC, mikrokomputery Atari
i Amiga, oraz VMS.
awk i gawk
Nazwa awk pochodzi od inicjałów jego projektantów: Alfreda V.
Aho, Petera J. Weinbergera i Briana W. Kernighana. Pierwotna wersja
awk została napisana w 1977 roku w AT&T Bell Laboratories.
W 1985 nowa wersja uczyniła ten język programowania potężniejszym,
wprowadzając funkcje definiowane przez użytkownika, wiele strumieni
wejściowych i obliczane wyrażenia regularne. Ta nowa wersja stała się
ogólnie dostępna z Unix System V Release 3.1. Wersja w System V Release 4
dodała kilka nowych cech jak również oczyściła zachowanie w niektórych
"ciemnych kątach" języka. Późniejsza specyfikacja awk
w standardzie POSIX Command Language and Utilities objaśniła język w oparciu
o opinie zarówno projektantów gawk, jak i projektantów pierwotnego
awk z Bell Labs.
Implementacja GNU, gawk, została napisana w 1986 przez Paula Rubina
i Jay Fenlason, z poradą Richarda Stallmana. John Woods również wniósł
część kodu. W 1988 i 1989 David Trueman z pomocą Arnolda Robbinsa,
gruntownie przeredagowali gawk w kierunku zgodności z nowszym
awk. Obecny rozwój koncentruje się na usuwaniu błędów, poprawie
efektywności, zgodności ze standardami i, od czasu do czasu, nowych cechach.
Free Software Foundation (FSF) jest organizacją non-profit, której celem jest tworzenie i rozpowszechnianie swobodnie dostępnego oprogramowania. Została założona przez Richarda M. Stallmana, autora oryginalnego edytora Emacs. GNU Emacs jest obecnie najszerzej używaną wersją Emacsa.
Projekt GNU jest nieustającym wysiłkiem ze strony Free Software
Foundation by stworzyć pełne, swobodnie dostępne, zgodne z POSIX środowisko
obliczeniowe. (GNU oznacza "GNU's not Unix" -- GNU to nie Unix.)
W celu zagwarantowania, że kod źródłowy ich oprogramowania będzie
zawsze dostępny dla użytkownika, FSF stosuje "Powszechną Licencję Publiczną
GNU" ("GNU General Public License" lub GPL). Dla informacji czytelnika
dołączono tu egzemplarz GPL
(zob. 18. Powszechna Licencja Publiczna GNU).
GPL ma zastosowanie w odniesieniu do kodu źródłowego gawk w języku C.
Zostały ukończone i są swobodnie dostępne: powłoka, edytor (Emacs), wysoce
przenośne optymalizujące kompilatory C, C++ i C-obiektowego, debuger
symboliczny i dziesiątki wielkich i małych narzędzi (jak gawk).
W momencie pisania (początek 1997) tej książki, jądro systemu operacyjnego
GNU (HURD), zostało już wydane, ale wciąż jest na wczesnym etapie rozwoju.
Dopóki system operacyjny GNU nie zostanie pełniej rozwinięty, powinieneś
rozważyć używanie Linuksa, swobodnie dostępnego, uniksopodobnego systemu
operacyjnego na 80386, DEC Alpha, Sun SPARC i inne systemy.
Istnieje wiele książek o Linuksie. Jedną ze wolnodostępnych jest
Linux Installation and Getting Started, Matta Welsha. Dostępnych
jest wiele dystrybucji Linuksa, często w sklepach komputerowych lub na
CD-ROM w komplecie z książkami o Linuksie. (Istnieją trzy inne swobodnie
dostępne, uniksopodobne systemy operacyjne na 80386 i inne systemy, NetBSD,
FreeBSD i OpenBSD.
Wszystkie oparte są o 4.4-Lite Berkeley Software Distribution i
wykorzystują najświeższe wersje gawk jako swoje wersje awk.)
Książka, którą teraz czytasz jest w rzeczywistości darmowa. Zawarte w niej
informacje są swobodnie dostępne dla każdego. Nadający się do przetwarzania
automatycznego kod źródłowy tej książki dostarczany jest z gawk,
a każdy może wziąć ją na kopiarkę i zrobić sobie tyle kopii ile zechce.
(Poświęć chwilę na sprawdzenie zezwolenia na kopiowanie na stronie z prawami
autorskimi.)
Jeżeli zapłaciłeś za tę książkę, to faktycznie zapłaciłeś za jej ładne wydrukowanie i oprawienie, i pokrycie związanych z jej produkcją kosztów wydawcy. Dołożyliśmy starań, by utrzymać te koszty na rozsądnym poziomie; większość osób woli oprawioną książkę niż ponad 330 stron zkserowanych stron, które następnie muszą być trzymane w skoroszycie (nie wspominając o czasie i pracy włożonej w kopiowanie). To samo dotyczy tworzenia tej książki ze źródła nadającego się do automatycznego przetworzenia; cena detaliczna jest tylko nieco wyższa od kosztu wydrukowania jej na drukarce laserowej.
Sama książka przeszła kilka poprzednich, wstępnych wydań. Jesienią 1988
rozpocząłem pracę od wstępnego szkicu podręcznika The GAWK Manual,
Diany Close, Paula Rubin i Richarda Stallmana. Miał on około 90 stron,
i ledwie opisywał pierwotną, "starą" wersję awk.
Po znaczących korektach, pierwszą wersją The GAWK Manual, jaką wydano
była Edycja 0.11 Beta w październiku 1989. Następnie podręcznik przeszedł
bardziej znaczne zmiany w Edycji 0.13 z grudnia 1991.
David Trueman, Pat Rankin i Michal Jaegermann wnieśli swoje sekcje do
podręcznika w Edycji 0.13. Została ona opublikowana przez FSF w formie
drukowanej książki na początku 1992. Od tej pory było kilka pomniejszych
wydań, by wymienić Edycję 0.14 z listopada 1992, opublikowaną przez FSF
w styczniu 1993, i Edycję 0.16 z sierpnia 1993.
Edycja 1.0 Efektywne programowanie w AWK jest w istotny sposób ponownym opracowaniem The GAWK Manual, z dużą ilością dodatkowego materiału. FSF i ja zgodziliśmy się, że teraz ja jestem głównym autorem. Czułem też, że potrzebuje ona bardziej opisowego tytułu.
Efektywne programowanie w AWK będzie bez wątpienia nadal się rozwijać.
Elektroniczna wersja dołączana jest do dystrybucji gawk z FSF.
Jeśli znajdziesz błąd w tej książce, proszę powiadom o nim!
Zob. B.7. Zgłaszanie problemów i błędów, gdzie podano
informacje na temat elektronicznego przesyłania zgłoszeń o błędach, albo
napisz do mnie w zastępstwie FSF.
Chciałbym podziękować Richardowi M. Stallmanowi, za jego wizję lepszego świata, i za jego odwagę w założeniu FSF i rozpoczęciu projektu GNU.
Początkowy szkic podręcznika The GAWK Manual zawierał następujące podziękowania:
Podziękowanie za pomoc w stworzeniu tego podręcznika należy się wielu ludziom. Jay Fenlason wniósł wiele pomysłów i przykładowych programów. Richard Mlynarik i Robert Chassell dali pomocne komentarze do wersji roboczych tego podręcznika. Dokument A Supplemental Document for
awkautorstwa Johna W. Pierce'a z Wydziału Chemii UC w San Diego, zwrócił uwagę na kilka kwestii związanych zarówno z implementacjąawkjak i niniejszym podręcznikiem, które inaczej by nam umknęły.
Niżej wymienieni ludzie dostarczyli wielu pomocnych komentarzy dotyczących Edycji 0.13 podręcznika The GAWK Manual: Rick Adams, Michael Brennan, Rich Burridge, Diane Close, Christopher ("Topher") Eliot, Michael Lijewski, Pat Rankin, Miriam Robbins i Michal Jaegermann.
Poniższe osoby dostarczyły wielu pomocnych komentarzy dotyczących Edycji 1.0 podręcznika Efektywne programowanie w AWK: Karl Berry, Michael Brennan, Darrel Hankerson, Michal Jaegermann, Michael Lijewski i Miriam Robbins. Pat Rankin, Michal Jaegermann, Darrel Hankerson i Scott Deifik zaktualizowali własne odpowiednie sekcje w Edycji 1.0.
Robert J. Chassell dostarczył bardzo wartościowych porad dotyczących posługiwania się Texinfo. Należą mu się także specjalne podziękowania za przekonanie mnie bym nie zatytułował tej książki How To Gawk Politely ("Jak poprawnie gawkować"). Karl Berry znacząco pomógł przy TeX-owej części Texinfo.
Specjalne podziękowanie należy się Davidowi Truemanovi: był prawdziwym
strażnikiem rozwoju gawk, dzięki niemu program działa dobrze i bez
błędów. Mimo iż nie jest już zaangażowany w prace przy gawk,
praca z nim przy tym projekcie była prawdziwą przyjemnością.
Scott Deifik, Darrel Hankerson, Kai Uwe Rommel, Pat Rankin i Michal
Jaegermann (niekoniecznie w tej kolejności) są długoletnimi członkami
"zespołu łamaczy d/s przenośności" gawk.
Bez ich ciężkiej pracy i wsparcia gawk nie byłby nawet
w przybliżeniu tak wysokiej jakości programem jak jest obecnie.
Praca z tym zespołem wspaniałych ludzi była i jest przyjemnością.
Jeffrey Friedl wniósł nieocenioną pomoc przy wyłapywaniu wielu problemów,
jakie pojawiły się ostatniej chwili w wyrażeniach regularnych
gawk 3.0.
David i ja chcielibyśmy podziękować Brianowi Kernighanowi z Bell Labs
za nieocenione wsparcie podczas testowania i debugowania gawk oraz
za pomoc w wyjaśnieniu mnóstwa kwestii dotyczących języka. Bez jego
pomocy nie zdołalibyśmy wykonać nawet w przybliżeniu tak dobrej roboty,
zarówno przy gawk jak i dokumentacji.
Chciałbym podziękować Marshallowi i Elaine Hartholz z Seattle oraz Dr.
Bertowi i Ricie Schreiber z Detroit za długie okresy spokojnych wakacji
w ich domach, które pozwoliły mi na dokonanie znaczącego postępu w pracy nad
tą książką i nad samym gawk. Phil Hughes z SSC wniósł swój wkład
w bardzo istotny sposób, pożyczając mi swojego laptopa z systemem Linux,
nie tylko jednokrotnie, ale dwa razy, umożliwiając mi wykonanie mnóstwa
pracy gdy byłem poza domem.
Na koniec, muszę podziękować swojej wspaniałej żonie, Miriam, za cierpliwość podczas wielu wersji tego projektu, za korekty i za dzielenie się mną z komputerem. Chciałbym podziękować swoim rodzicom za ich miłość i za dobroć, w której mnie wychowali i wykształcili. Muszę też wyrazić swą wdzięczność B-gu, za wiele okazji jakie zesłał na mojej drodze i za dary jakie mi ofiarował, bym mógł z tych okazji skorzystać.
Arnold Robbins
Atlanta, Georgia
Luty 1997
Niniejszy przekład powstał w ramach Projektu Tłumaczenia Manuali. Zgłoszenia błędów, komentarze i sugestie proszę przesyłać na listę dyskusyjną Projektu: ptm@amg.net.pl lub ewentualnie do autora tłumaczenia.
Polską wersję Powszechnej Licencji Publicznej GNU (GNU GPL) można znaleźć na http://www.linux.org.pl/ oraz http://gnu.org.pl/. Proszę pamiętać, że pod względem prawnym obowiązująca jest wyłącznie oryginalna, angielska wersja. Stanowisko FSF w tej kwestii wyjaśniono na stronie http://www.gnu.org/copyleft/copyleft.html.
W.Kotwica (wkotwica@post.pl)
To jest nieoficjalne tłumaczenie warunków rozpowszechniania na język polski. Nie zostało ono opublikowane przez Free Software Foundation i pod względem prawnym nie stanowi warunków rozpowszechniania -- ustanawia je wyłącznie oryginalny tekst angielski. Jednak tłumacz ma nadzieję, że pomoże ono lepiej zrozumieć warunki rozpowszechniania osobom mówiącym po polsku.
This is an unofficial translation of the distribution terms into Polish language. It was not published by the Free Software Foundation, and does not legally state the distribution terms--only the original English text does that. However, the translator hopes that it will help Polish language speakers understand distribution terms better.
Zezwala się na tworzenie i rozpowszechnianie wiernych kopii tego podręcznika, pod warunkiem, że na wszystkich kopiach zostanie zachowana informacja o prawach autorskich i niniejsze zezwolenie.
Zezwala się na kopiowanie i rozpowszechnianie zmienionych wersji tego podręcznika na warunkach jak dla wiernych kopii, pod warunkiem, że cała praca pochodna będzie rozpowszechniana na warunkach zezwolenia identycznego jak niniejsze.
Zezwala się na kopiowanie i rozpowszechnianie tłumaczeń tego podręcznika na inny język, pod wyżej podanymi warunkami dla zmienionych wersji, za wyjątkiem tego, że niniejsze zezwolenie może być ustanowione w tłumaczeniu zaakceptowanym przez Fundację.
Przejdź do pierwszej, poprzedniej, następnej, ostatniej sekcji, spisu treści.