Home Dokumentacje Efektywne programowanie w AWK - Podręcznik użytkownika GNU awk - Wstęp
14 | 10 | 2019
Efektywne programowanie w AWK - Podręcznik użytkownika GNU awk - Wstęp Drukuj

Przejdź do pierwszej, poprzedniej, następnej, ostatniej sekcji, spisu treści.

 


 

1. Wstęp

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.

Stosując awk można:

  • zarządzać małymi, osobistymi bazami danych
  • generować raporty
  • sprawdzać poprawność danych
  • tworzyć indeksy i wykonywać inne zadania przygotowywania dokumentów
  • a nawet eksperymentować z algorytmami, które później mogą być zaadaptowane do innych języków komputerowych

1.1. Posługiwanie się tą książką

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.

Ciemne kąty

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".

1.2. Konwencje typograficzne

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.

1.3. Pliki danych do przykładów

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.

 
Linki sponsorowane

W celu realizacji usług i funkcji na witrynach internetowych ZUI "ELPRO" stosujemy pliki cookies. Korzystanie z witryny bez zmiany ustawień dotyczących plików cookies oznacza, że będą one zapisywane w urządzeniu wyświetlającym stronę internetową. Więcej szczegółów w Polityce plików cookies.

Akceptuję pliki cookies z tej witryny.