Go to the first, previous, next, last section, table of contents.


Bevezetés

Ha Te is olyan felhasználó vagy, mint megannyi más computer felhasználó, akkor gyakran szeretnél módosítani szöveg file-okat, amikben bizonyos minták sűrűn fordulnak elô, vagy bizonyos sorokból adatot szeretnél kinyerni, és minden mást eldobni. Egy C vagy Pascal proramot írni ilyen feladatra idôt rabló és kényelmetlen, ill. több sornyi kódot igényel. Valószínűleg könnyebben megoldható a feladat awk-al.

Az awk program egy olyan speciális célú programnyelvet képes értelmezni, (mint egy interpreter - a fordító), amely lehetôvé tesz egyszerű adatformázási munkákat néhány sor kóddal.

Az awk GNU megvalósítását gawk-nak hívják; teljesen kompatíbilis az awk System V Release 4 verziójával. Ezenkívül a gawk teljesen kompatíbilis az awk programozási nyelv POSIX szabványban rögzített definíciójával. Ez azt jelenti, hogy minden jól megírt awk programnak működnie kell a gawk-al is. Így nincs értelme különbséget tenni a gawk és az awk implementációja között.

Az awk használatával:

A könyv használata

Az awk kifejezés vonatkozik magára a programra és a programozási nyelvre is. A könyv során ha szükséges a megkülönböztetés, akkor a programot "az awk segédprogram" és a nyelvet "az awk programozási nyelv" kifejezéssel jelöljük. A gawk kifejezés a GNU "project" részeként kifejlesztett awk verziót jelöli. A könyv célja, hogy bemutassa az awk programozási nyelvet és az awk program futtatási lehetôségeit.

A könyv fô célja bemutatni az awk programozási nyelv POSIX szabványban definiált tulajdonságait egy konkrét implementáción, a gawk-on, keresztül. Ugyanakkor megpróbáljuk felhívni a figyelmet a gawk és más awk megvalósítások közötti fontos különbségekre, illetve minden a gawk által implementált, de a POSIX szabványban nem rögzített lehetôségre is.

A könyv egyszerre próbál felhasználói és referencia kézikönyvként szolgálni, ezért ha kezdô felhasználó vagy, nyugodtan ugord át a bonyolultabb részeket. A sok kereszthivatkozás sem fontos most számodra, mivel ezek a profi felhasználók számára hasznosak, és a könyv "on-line" verziójához szükségesek.

Az awk program kifejezés az általad írt programra vonatkozik, amit az awk programozási nyelven írtál.

See section Kezdô lépések awk-ban, ami elmagyarázza az abszolút minimum és szükséges tudást az awk használatához.

Néhány hasznos "egysoros" program található a könyv következô fejezetében, (see section Hasznos egysoros programok), hogy ráérezz az awk nyelvre.

További awk példaprogramokat találsz az alábbi fejezetekben. (See section A Library of awk Functions, illetve see section Practical awk Programs).

A awk programozási nyelv összegzését a gyors keresés érdekében megtalálhatod a függelékben, section gawk Summary. Ha csak a memoriádat akarod felfrissíteni az awk nyelv egy adott részleterôl, akkor ezt a fejezetet neked találták ki.

Ha ismeretlen kifejezéssel találkozol, üsd fel a (see section Glossary) fejezetet.

A legtöbb esetben teljes awk programot adunk meg mint példát, de a haladó fejezetekben elôfordul, hogy csak egy programrészletet használunk a koncepció bemutatására.

A könyv fôleg olyan felhasználókat céloz meg, akik még nem ismerik az awk programozási nyelvet, ugyanakkor sok információt tartogat a profi felhasználók számára is. Ilyen például az awk POSIX definíciója, és a példaprogramok jelentôs része a section A Library of awk Functions, és section Practical awk Programsán.

Sötét sarkok

Ki nyitotta ki azt az elsötétített ablakot?!?
Gróf Dracula

A POSIX szabvány (és a The Gawk Manual) megjelenéséig az awk sok tulajdonsága gyengén vagy egyáltalán nem volt dokumentálva. Ezeket hívják "sötét sarkoknak". A könyvben az "(s.s.)" jelzéssel hívjuk fel rájuk a figyelmet, és a tárgymutatóban is megtalálhatóak a "sötet sarkok" címszó alatt.

Tipográfiai jelölések

Ez a könyv GNU Texinfo formátumot használja a szöveg szedésére. A Texinfo file-ból el lehet készíteni a dokumentum nyomtatott vagy "on-line" verzióját. Ebbôl kifolyólag a szedési minta eltér más, általad olvasott könyvekétôl.

Az általad begépelhetô parancssorokat megelôzi a "shell" elsôdleges és másodlagos "prompt"-ja, `$' és `>'. A parancs kimenetét, eredményét a "-|" jel elôzi meg. Ez általában a parancs szabványos kimenetét jelöli. A hibaüzenetek és egyéb üzenetek elôtt az "error-->" jel lesz feltüntetve. Például:

$ echo hi on stdout
-| hi on stdout
$ echo hello on stderr 1>&2
error--> hello on stderr

A szövegben a parancsnevek ezzel a karakterrel jelennek meg. A kódrészleteket ugyanezzel a betűvel írjuk, de idézôjelek között, `például így'. Néhány dolgot hangsúlyozni szeretnénk az elôbbi módon, a különösen fontosakat pedig így fogjuk írni. Egy új kifejezés elsô elôfordulásánál általában a definícióját is megadjuk, és ez olyan betűtípussal fog megjelenni, mint amit a "definíció" szónal használtunk ebben a mondatban. A file-nevek pedig így fognak kinézni: `/path/to/ourfile'.

Az általad begépelt betűk szedése ilyen lesz. Van néhány speciális karakter, a "vezérlô karakterek", amelyeket úgy tudsz begépelni, hogy lenyomva tartod a CONTROL billentyűt, amíg megnyomod a kívánt, másik billentyűt. Például a Control-d esetén elôször megnyomod és lenyomva tartod a CONTROL billentyűt, majd megnyomod a d billentyűt. Végül mindkét billentyűt felengeded.

Adat file-ok a példákhoz

A példák jelentôs része két minta adat file-t használ. Az elsô file, `BBS-list', néhány elektronikus faliújságként szolgáló rendszer listája. A második file, `inventory-shipped', néhány szállítmány listáját tartalmazza havi bontásban. Mindkét file-ban, minden egyes sort egy rekordnak tekintünk.

A `BBS-list' file-ban, minden rekord tartalmazza a számítógép nevét, telefonszámát, az átviteli sebességét (baud) és egy kódot ami megmondja, hogy a gép hány órát van üzemben. Az `A' kód az utolsó oszlopban azt jelenti, hogy a faliújság napi 24 órát van üzemben. A `B' kódú számítógépek csak este és a hétvégi órákban üzemelnek. A `C' kód jelentése pedig, hogy a faliújság csak a hétvégén elérhetô.

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

A második file, `inventory-shipped', az egy év során teljesített szállítmányok listáját tartalmazza. Minden rekord tartalmazza a hónapot, a zöld rekeszek, a piros dobozok, a narancsos zsákok és a kék csomagok számát. A file 16 bejegyzése magába foglalja egy év 12 hónapját és a következô év elsô négy hónapját.

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


Go to the first, previous, next, last section, table of contents.