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