Jeśli przypominasz wielu z użytkowników komputerów, to zapewne często
robisz zmiany w rozmaitych plikach tekstowych w miejscach, gdzie
występują pewne wzorce, lub wyłuskujesz dane z fragmentów pewnych wierszy
odrzucając resztę. Napisanie wykonującego to programu w języku takim
jak C czy Pascal jest czasochłonne i niewygodne, może też pochłonąć wiele
linii kodu. Zadanie może być łatwiejsze przy użyciu awk.
Narzędzie awk interpretuje specjalizowany język programowania,
umożliwiający obsługę prostych zadań reformatowania danych za pomocą
zaledwie kilku linii kodu.
Wykonana w ramach GNU implementacja awk nazywa się gawk.
Jest w pełni zgodna w górę z wersją awk z System V
Release 4. gawk jest też zgodny w górę ze specyfikacją POSIX
języka awk. To znaczy, że wszystkie poprawnie napisane programy
awk powinny działać z gawk. Zatem, zwykle nie rozróżniamy
gawk i innych implementacji awk.
Określenie awk odnosi się do konkretnego programu oraz do języka
używanego, by powiedzieć temu programowi, co ma zrobić. Gdy potrzebujemy
być precyzyjni, nazywamy program "narzędziem awk" zaś język
"językiem awk". Określenie gawk odnosi się do wersji
awk wykonanej jako część projektu GNU. Celem tej książki
jest objaśnienie zarówno języka awk jak i sposobu uruchamiania
narzędzia gawk.
Głównym celem tej książki jest wyjaśnienie możliwości awk
zdefiniowanych w standardzie POSIX. Zrobiono to w kontekście jednej
konkretnej implementacji, gawk. Równocześnie usiłowano także opisać
istotne różnice pomiędzy gawk a innymi implementacjami awk.
I na koniec, odnotowano wszelkie cechy gawk nie istniejące
w standardzie POSIX dla awk.
Niniejsza książka ma trudne zadanie bycia zarówno podręcznikiem jak i informatorem. Jeżeli jesteś nowicjuszem, możesz swobodnie pominąć szczegóły, które wydają się zbyt skomplikowane. Powinieneś też zignorować wiele odsyłaczy. Są one przeznaczone dla doświadczonych użytkowników i wersji interaktywnej tego dokumentu w postaci Info.
Określenie program awk odnosi się do programu napisanego
w języku programowania awk.
Zob. 2. Zaczynamy pracę z awk, gdzie znaleźć
można same podstawy niezbędne do rozpoczęcia pracy z awk.
Dołączono nieco przydatnych "jednolinijkowców", by dać pojęcie o języku
awk (zob. 3. Przydatne programy jednolinijkowe).
Podano tu też wiele przykładowych programów awk
(zob. 15. Biblioteczka funkcji awk; również
zob. 16. Praktyczne programy awk).
Całość języka awk podsumowano w krótkim informatorze
A. Podsumowanie gawk. Zaglądnij tam, jeśli potrzebujesz
przypomnieć sobie jakąś konkretną cechę.
Jeżeli napotkasz termin, który nie jest ci znany, spróbuj poszukać go w słowniku (zob. D. Słownik).
W większości przypadków jako przykłady zastosowano kompletne programy
awk, ale w kilku bardziej zaawansowanych sekcjach pokazano tylko
część programu, ilustrującą opisywane pojęcie.
Mimo, że książka ta zasadniczo skierowana jest do osób, które nie spotkały
się dotąd z awk, zawiera też wiele informacji, które nawet
ekspert w awk powinien uznać za przydatne. W szczególności,
zainteresować powinien opis POSIX awk i przykładowe programy w
15. Biblioteczka funkcji awk, a także
16. Praktyczne programy awk.
Kto uchylił to okno?!? Hrabia Dracula
Do powstania standardu POSIX (i The Gawk Manual), wiele cech awk
było albo słabo udokumentowanych, albo w ogóle nie udokumentowanych. Opisy
takich cech (często zwanych "ciemnymi kątami" - "dark corners") odnotowane
są w niniejszej książce za pomocą "(c.k.)".
Pojawiają się też w indeksie pod hasłem "ciemny kąt".
Książkę tę napisano za pomocą Texinfo, języka formatowania dokumentacji GNU. Pojedynczy plik źródłowy Texinfo służy do utworzenia zarówno wersji drukowanej dokumentacji jak i wersji interaktywnej. Z tego powodu, konwencje typograficzne są nieco odmienne niż w innych książkach, które zapewne czytałeś.
Przykłady wpisywane w wierszu poleceń poprzedzane są standardowymi symbolami zachęty powłoki, głównym i pomocniczym, `$' i `>'. Wyjście poleceń poprzedzane jest glifem "-|". Typowo reprezentuje on standardowe wyjście danego polecenia. Komunikaty o błędach i inne wyniki na standardowym wyjściu błędów poprzedzane są glifem "error-->". Na przykład:
$ echo hi on stdout -| hi on stdout $ echo hello on stderr 1>&2 error--> hello on stderr
W tekście nazwy poleceń pojawiają się tą czcionką, podczas gdy
fragmenty kodu pojawiają się tą samą czcionką i cytowane `w ten
sposób'. Pewne rzeczy będą uwydatnione jak ta, a jeśli istotna
kwestia musi być szczególnie podkreślona, będzie to zrobione właśnie
tak. Pierwsze wystąpienie nowego określenia zwykle jest jego
definicją i pojawia się napisane tą samą czcionką, co poprzednie
wystąpienie "definicji" w tym zdaniu. Nazwy plików wskazywane są tak:
`/sciezka/do/pliku'.
Znaki wpisywane z klawiatury wyglądają w ten sposób. W szczególności, istnieją znaki specjalne zwane "znakami sterującymi" ("control characters"). Są one znakami wprowadzanymi przez równoczesne przytrzymanie klawisza CONTROL i innego klawisza. Na przykład, Control-d wprowadzane jest przez najpierw naciśnięcie i przytrzymanie klawisza CONTROL, następnie naciśnięcie klawisza d, i na koniec puszczenie obu klawiszy.
Wiele przykładów w tej książce pobiera dane wejściowe z dwu przykładowych plików danych. Pierwszy, o nazwie `BBS-list', reprezentuje zestawienie systemów elektronicznych tablic ogłoszeniowych (BBS), z informacją o tych systemach. Drugi plik danych, o nazwie `inventory-shipped', zawiera dane o wysyłkach towarów w kolejnych miesiącach. W obu plikach każdy wiersz uważany jest za jeden rekord.
W pliku `BBS-list', każdy rekord zawiera nazwę komputera prowadzącego BBS, jego numer telefonu, prędkość (prędkości) transmisji w bodach i kod oznaczający godziny, w jakich działa BBS. Litera `A' w ostatniej kolumnie oznacza, że BBS działa 24 godziny na dobę. `B' w ostatniej kolumnie oznacza, że BBS działa tylko wieczorami i w weekendy. `C' oznacza, że funkcjonuje tylko w weekendy.
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
Drugi plik danych, o nazwie `inventory-shipped', reprezentuje dane o dostawach towarów w ciągu roku. Każdy rekord zawiera odpowiednio miesiąc roku, liczbę wysłanych zielonych skrzyń, liczbę wysłanych czerwonych skrzyń i liczbę wysłanych niebieskich skrzyń. Jest w nim 16 pozycji, obejmujących 12 miesięcy jednego roku i cztery miesiące następnego.
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
Przejdź do pierwszej, poprzedniej, następnej, ostatniej sekcji, spisu treści.