gawk

GAWK(1)                        Utility Commands                        GAWK(1)



NÃV
       gawk - mintakeresŠés -feldolgozó nyelv

ÃTTEKINTÃS
       gawk [ POSIX vagy GNU stÃlusú opciók ] -f program-file [ -- ] file
       ...
       gawk [ POSIX vagy GNU stÃlusú opciók ] [ -- ] file ...

LEÃRÃS
       A gawk az AWK programnyelv GNU Project általi megvalósÃtása.
       Alkalmazkodik a nyelv POSIX 1003.2 Command Language And Utilities
       Standard-beli definÃciójához. MásfelÅl ez a verzió az - Aho,
       Kernighan és Weinberger által Ãrt - The AWK Programming Language leÃ‐
       rásán alapul; a UNIX awk System V Release 4 verziójában található
       további szolgáltatásokkal kiegészÃtve. A gawk újabb keletű Bell
       Labs bÅvÃtésekkel és néhány GNU-specifikus bÅvÃtéssel is szolgál.

       A parancssor magának a gawk -nak adandó paraméterekbÅl, az AWK
       program szövegébÅl (ha nem a -f vagy --file opciók segÃtségével
       adjuk meg), valamint - késÅbb az ARGC és ARGV elÅre definiált AWK
       változókkal elérhetÅ - értékekbÅl áll.

OPCIÃFORMÃTUM
       A gawk opciók lehetnek a POSIX-féle hagyományos egybetűs opciók,
       vagy a GNU stÃlusú hosszú opciók. A POSIX stÃlusú opciók szimpla
       kötÅjellel (``-''), mÃg a GNU hosszú opciói dupla kötÅjellel
       (``--'') kezdÅdnek.  Egyaránt GNU stÃlusú hosszú opciókkal vannak
       ellátva a GNU- specifikus és a POSIX-ban elÅÃrt szolgáltatások. Az
       AWK nyelv egyéb megvalósÃtásai valószÃnűleg csak a hagyományos
       egybetűs opciókat fogadják el.

       Követve a POSIX szabványt a gawk specifikus opciókat a -W
       paraméterrel lehet megadni. Megadhatunk több -W paramétert, vagy
       egyet több argumentummal. Utóbbi esetben az argumentumokat vesszÅvel
       kell elválasztani; vagy whitespace-szel, és zárójelek közé tenni.
       A kis-/nagybetűk egyenértékűek a -W opció argumentumaiban.
       Mindegyik -W opciónak megvan a maga GNU stÃlusú párja (ld. lejjebb).
       A GNU stÃlusú opciók argumentumait vagy az opcióval = jellel
       összekötve (közbülsÅ space-ek nélkül), vagy mint a következÅ
       parancssori paramétert kell megadni. A hosszú opciók rövidÃthetÅk
       mindaddig, amÃg a rövidÃtés egyedi marad.

OPCIÃK
       A gawk a következŠopciókat fogadja el:

       -FS fs
       --field-separator fs
              Bemeneti mezÅelválasztóként fs értékét használja
              (alapértelmezés az elÅre definiált FS változó értéke).

       -v var=val
       --assign var=val
              A var változóhoz rendeli a val értéket mielÅtt a program
              végrehajtása megkezdÅdik. Az ilyen változóértékek
              elérhetÅk az AWK program BEGIN blokkjában.

       -f program-file
       --file program-file
              Az AWK programot a program-file forrásfile-ból, olvassa elsÅ
              parancssori argumentum helyett. Több -f (or --file) opció
              használható.

       -mf NNN
       -mr NNN
              Különféle memóriakorlátokat állÃt be NNN értékre. Az f
              jelzÅ a mezÅk maximális számát, az r jelzÅ a rekordok
              maximális számát állÃtja be. Ez a két jelzŠés a -m opció
              az AT&T Bell Labs research UNIX awk verziójából származik.
              A gawk figyelmen kÃvül hagyja, mivel a gawk -nak nincsenek
              elÅdefiniált korlátai.

       -W traditional
       -W compat
       --traditional
       --compat
              Futás kompatÃbilis módban. Amikor kompatÃbilis módban fut, a
              gawk UNIX awk -kal megegyezÅen viselkedik, azaz nem ismeri fel e
              GNU-specifikus bÅvÃtéseket. A --traditional formát részesÃ‐
              tjük elÅnyban a többivel szemben. További információ: lásd
              lejjebb a GNU BÅVÃTÃSEK részt.

       -W copyleft
       -W copyright
       --copyleft
       --copyright
              Kinyomtatja a szabványos kimenetre a GNU szerzÅi jogi
              információ rövid verzióját, és sikeresen befejezi a
              futást.

       -W help
       -W usage
       --help
       --usage
              A rendelkezésre álló opciók egy viszonylag rövid
              összegzését nyomtatja a szabványos kimenetre. (A GNU
              Kódolási Szabályok -nak megfelelÅen ezek az opciók azonnali,
              sikeres kilépést eredményeznek.)

       -W lint
       --lint Figyelmeztet a bizonytalan vagy a más AWK megvalósÃtásra át
              nem vihetÅ szerkezetekre.

       -W posix
       --posix
              Bekapcsolja a kompatÃbilis módot az alábbi megkötésekkel:

              · a \x escape szekvenciákat nem ismeri fel.

              · csak a space és a tab működik mezÅelválasztóként, amikor
                FS értéke space-re van beállÃtva, az újsor nem.

              · A function kulcsszó func szinonÃmáját nem ismeri fel.

              · A ** és a **= operátor nem használható a ^ és a ^=
                helyén.

              · Az fflush() függvény nem elérhetÅ.

       -W re-interval
       --re-interval
              Engedélyezi az intervallum kifejezések használatát a
              reguláris kifejezések illesztésénél (lásd alább:
              RegulárisKifejezések ). Intervallum kifejezések eredetileg
              nem voltak használhatók az AWK nyelvben.  A POSIX szabvány
              adta Åket hozzá, hogy az awk -ot és az egrep -et
              konzisztenssé tegyék egymással. Azonban használatuk
              valószÃnűleg tönkreteszi a régi AWK programokat, Ãgy a gawk
              csak akkor nyújtja azokat, ha ezzel az opcióval kérik, vagy
              ha a --posix meg van adva.

       -W source program-text
       --source program-text
              A program-text -et AWK forráskódként használja. Ez az opció
              lehetÅvé teszi a könyvtári függvények ( -f és --file )
              könnyű keverését a parancssorban megadott forráskóddal. Ez
              elsÅsorban shell szkriptekben használt nagy AWK programok
              közvetÃtÅ közegének van szánva.

       -W version
       --version
              KiÃrja az aktuális gawk program verzióját a szabványos
              kimenetre. Ez akkor hasznos, ha tudni szeretnénk, hogy a
              rendszeren lévŠprogram a legújabb-e, tekintetbe véve
              mindent, amit a Szabad Software AlapÃtvány kiad. Szintén
              hasznos hibajelentésekhez. (A GNU Kódolási Szabályok -nak
              megfelelÅen ezek az opciók azonnali, sikeres kilépést
              eredményeznek.)

       --     Az opciók végét jelzi. Hasznos, ha engedélyezni akarjuk,
              hogy a további, magának az AWK programnak átadandó
              argumentumok ``-'' jellel kezdÅdjenek.  Ez fÅként a - legtöbb
              POSIX program által alkalmazott - argumentum elemzési
              konvencióval való egyezÅség miatt született.

       KompatÃbilis módban a program minden egyéb opciót illegálisként
       jelöl meg, egyébként figyelmen kÃvül hagyja azokat. Rendes
       működéskor, mindaddig, amÃg szöveget talál, az ismeretlen
       opciókat feldolgozásra átadja az AWK programnak az ARGV tömbben. Ez
       különösen az AWK programok ``#!'' mechanizmussal történÅ
       futtatásakor hasznos.

AZ AWK PROGRAM VÃGREHAJTÃSA
       Egy AWK program minta-tevékenység utasÃtások és opcionális
       függvénydefinÃciók sorozata.

              minta  { tevékenység utasÃtások }
              function név(paraméter lista) { utasÃtások }

       A gawk elÅször beolvassa a programforrást a programfile -(ok)ból (ha
       meg van adva ilyen), a --source argumentumából, vagy a parancssor
       elsÅ, nem-opció argumentumából. A -f és a --source opciók
       többször használhatók a parancssorban. A gawk ilyenkor úgy olvassa
       be a program szövegét, mintha minden programfile és parancssori
       forrásszöveg össze volna kapcsolva (konkatenálva). Ez jól
       használható AWK függvénykönyvtárak kialakÃtásához. Ãgy nincs
       szükség a függvények befoglalására minden olyan új programba,
       amely használja azokat.  Ez azt is lehetÅvé teszi, hogy a könyvtári
       függvényeket a parancssori programokkal keverjük.

       Az AWKPATH környezeti változó elÅÃrja a -f opcióval megnevezett
       fájlok keresési útvonalát. Ha ez a változó nem létezik, az
       alapértelmezett keresési útvonal: ".:/usr/local/share/awk".  (A
       tényleges könyvtár aszerint változhat, hogy a gawk -ot hogyan
       fordÃtották és installálták.) Amennyiben egy, a -f opcióval
       átadott fájlnév ``/'' karaktert tartalmaz, nem hajtódik végre
       útvonal-keresés.

       A gawk a következŠforgatókönyv szeint hajtja végre a programokat.
       ElÅször végrehajt minden, a -v opcióval elÅÃrt
       változó-értékadást. Ezután egy belsÅ formába fordÃtja a
       programot, végrehajtja a BEGIN blokk(ok)ban levŠkódot (ha van
       ilyen), majd beolvas minden, az ARGV tömbben megadott fájlt. Ha nincs
       file megnevezve a parancssorban, a gawk a szabványos bemenetet
       olvassa.

       Ha egy, a parancssorban megadott fájlnév var=val formájú, akkor ezt
       a gawk változó-értékadásként kezeli; a var változó megkapja a
       val értéket. (Ez azután történik, hogy minden BEGIN block
       lefutott.) A parancssori értékadás ott a leghasznosabb, ahol olyan
       változók értékeit adjuk meg dinamikusan, amelyek azt Ãrják elÅ,
       hogy a bemenetet milyen módon kell mezÅkre és rekordokra bontani. Ez
       állapot figyelésre is alkalmas, ha több futás is szükséges
       egyetlen adatfile-on.

       Ha az ARGV egy bizonyos eleme üres értékű (""), a gawk átugorja
       azt.

       A gawk ellenÅrzi a bemenet minden rekordját, hogy eldöntse,
       illeszkedik-e az AWK program bármely mintájára.  Minden olyan
       mintához rendelt tevékenység végrehajtódik, amely mintára a
       rekord illeszkedik. A minták a programbeli elÅfordulás sorrendjében
       kerülnek vizsgálat alá.

       Végül, miután minden bemenetnek a végére ért, a gawk végrehajtja
       az END blokk(ok)ban lévŠkódot (ha van ilyen).


VÃLTOZÃK, REKORDOK ÃS MEZÅK
       Az AWK változók dinamikusak; elsŠhasználatukkor jönnek létre.
       Ãrtékük vagy lebegÅpontos, vagy karakterlánc, vagy mindkettÅ, a
       használatuk módjától függÅen. Az AWK-ban léteznek még
       egydimenziós tömbök; a többdimenziósak szimulálhatók. Számos
       elÅdefiniált változó kap értéket egy program futása alatt; ezek
       leÃrása és összegzése alább, a szükséges helyen történik.


   Rekordok
       Rendszerint a rekordok újsor karakterekkel vannak elválasztva.
       Megadható a rekordelválasztás módja az RS nevű beépÃtett
       változó értékének hozzárendelésével. Ha RS egyetlen karakter,
       ez a karakter lesz a rekordelválasztó. Egyébként RS reguláris
       kifejezés. Az erre a reguláris kifejezésre illeszkedŠszöveg a
       rekordelválasztó. Azonban kompatÃbilis módban csak
       karakterlánc-értékének elsŠkaraktere lesz felhasználva a rekordok
       szétválasztására.  Ha RS üres karakterláncra van beállÃtva,
       akkor a rekordokat üres sorok választják el.  Ilyenkor az újsor
       karakter mezÅelválasztóként viselkedik, bármilyen értékű is FS.

   MezÅk
       Amint beolvassa az egyes rekordokat, a gawk mezÅk -re bontja azokat, az
       FS változó értékét használva mezÅelválasztóként. Ha FS
       egyetlan karakter, ez a karakter választja el a mezÅket. Ha FS üres
       karakterlánc, akkor minden egyes karakter külön mezŠlesz.
       Egyébként a program FS -t, mint reguláris kifejezést kezeli. Abban
       a speciális esetben, amikor FS egyetlen space, a mezÅket space
       és/vagy tab és/vagy újsor karakterek választják el. (De lásd
       lejjebb a --posix opció tárgyalását). Fontos, hogy az IGNORECASE
       értéke (lásd lejjebb) szintén befolyásolja, hogy a mezÅk miként
       választódnak szét, amikor az FS reguláris kifejezés; és hogy
       hogyan szeparálódnak a rekordok, amikor az RS reguláris kifejezés.

       Ha a FIELDWIDTHS változó értékeként space-ekkel elválasztott
       számlista van megadva, a gawk fix szélességű mezÅket vár, és a
       rekordot az adott szélességekre darabolja. Az FS értékét figyelmen
       kÃvül hagyja.  FS-nek új értéket adva a FIELDWIDTHS használata
       megszüntethetÅ, és visszaállÃtható az alapértelmezett működés.

       A bemeneti rekord minden mezÅjére pozÃciója alapján hivatkozhatunk (
       $1, $2, stb.)  $0 az egész rekord. A mezŠértéke meg is adható. A
       mezÅhivatkozásnak nem szükséges konstansnak lennie:

              n = 5
              print $n

       kiÃrja a bemeneti rekord ötödik mezÅjét. Az NF változó a bemeneti
       rekord mezÅinek számát tartalmazza.

       A nemlétezÅ mezÅkre történÅ hivatkozások (azaz $NF-nél nagyobb
       indexű mezÅk) üres karakterláncot eredményeznek. Azonban a
       nemlétezÅ mezÅnek történŠértékadás (pl.  $(NF+2) = 5) megnöveli
       NF értékét, minden közbeesÅ mezÅt üres karakterlánc-értékkel
       hoz létre, és $0 értékét újra kiértékelteti úgy, hogy a
       mezÅelválasztó OFS értéke lesz. A negatÃv mezÅhivatkozások
       fatális hibát okoznak.  NF dekrementálása az új érték utáni
       mezÅk értékének elvesztésével jár, valamint $0 értékének
       újraszámÃtását okozza, OFS értékének megfelelÅ
       mezÅelválasztással.

   BeépÃtett változók
       A gawk beépÃtett változói:

       ARGC        A parancssori argumentumok száma (nem tartalmazza a gawk
                   -nak szóló argumentumokat, vagy a program
                   forráskódját).

       ARGIND      Az éppen feldolgozás alatt álló file indexe az ARGV
                   tömbben.

       ARGV        A parancssori argumentumok tömbje. A tömb indexei 0-tól
                   ( ARGC -1 ) -ig tartanak. Az ARGV tartalmának dinamikus
                   megváltoztatásával az adatfile-ok csoportja módosÃ‐
                   tható.

       CONVFMT     A számok konverziós formátuma. Alapértelmezésben %.6g.

       ENVIRON     Az aktuális környezetet tartalmazó tömb. A tömb a
                   környezeti változók nevével van indexelve, minden elem
                   az adott változó értéke (pl. ENVIRON["HOME"] értéke
                   lehet /home/valaki ). E tömb megváltoztatása nincs
                   hatással a gawk -ból átirányÃtással vagy a system()
                   függvénnyel hÃvott programok által látott környezetre.
                   (Ez a gawk jövÅbeni verzióiban változhat.)

       ERRNO       Ha rendszerhiba történik a getline -ba átirányÃtáskor,
                   a getline -ba olvasáskor vagy a close() alatt, akkor az
                   ERRNO tartalmazza a hibát leÃró karakterláncot.

       FIELDWIDTHS A mezÅszélességek szóközökkel elválasztott listája.
                   Ha ez be van állÃtva, a gawk rögzÃtett szélességű
                   mezÅkre tördeli a bemenetet, ahelyett, hogy az FS
                   változó, mint mezÅelválasztó értékét használná. A
                   rögzÃtett mezÅszélesség használatának lehetÅsége még
                   kÃsérleti jellegű; jelentése idÅvel változhat.

       FILENAME    Az aktuális bemeneti file neve. Ha nincs file megadva a
                   parancssorban, a FILENAME értéke ``-''. Azonban a
                   FILENAME nem definiált a BEGIN blokkon belül.

       FNR         A bemeneti rekord sorszáma az aktuális bemeneti fájlban.

       FS          A bemeneti mezÅelválasztó. Alapértelmezésben szóköz.
                   Lásd feljebb: MezÅk.

       IGNORECASE  Meghatározza minden reguláris kifejezés és
                   karakterlánc-művelet esetérzékenységét.  Ha az
                   IGNORECASE nem nulla, akkor a karakterláncok
                   összehasonlÃtása és a mintaillesztés, a mezÅdarabolás
                   FS -szel, a rekordok elválasztása RS -szel, a reguláris
                   kifejezések illesztése ~ -vel és !~ -vel, és a
                   gensub(), gsub(), index(), match(), split(), valamint a
                   sub(), elÅre definiált függvények nem lesznek
                   esetérzékenyek a reguláris kifejezésekkel végzett
                   műveleteknél. Ãgy, ha az IGNORECASE nem nulla, /aB/
                   egyaránt illeszkedik az ab, aB, Ab, és AB
                   karakterláncokra. Mint minden AWK változónak, az
                   IGNORECASE -nek is nulla a kezdeti értéke, tehát
                   rendesen minden reguláris kifejezés esetérzékeny. Unix
                   alatt a teljes ISO 8859-1 Latin-1 karakterkészlet
                   használatos az esetérzékenység elhagyásakor.  FONTOS:
                   a 3.0-át megelÅzÅ gawk verziókban, az IGNORECASE csak a
                   reguláris kifejezéssel végzett műveletekre volt
                   hatással. Ma már befolyásolja a
                   karakterlánc-összehasonlÃtásokat is.

       NF          A mezÅk száma az aktuális bemeneti rekordban.

       NR          A már beolvasott rekordok teljes összege.

       OFMT        A számok kimeneti formátuma. Alapértelmezésben %.6g.

       OFS         A bemeneti mezÅelválasztó. Alapértelmezésben szóköz.

       ORS         A kimeneti rekordelválasztó. Alapértelmezésben újsor
                   karakter.

       RS          A bemeneti rekordelválasztó. Alapértelmezésben újsor
                   karakter.

       RT          Rekordterminátor. A gawk arra a bemenÅ szövegre állÃtja
                   be, amely illeszkedik az RS által meghatározott
                   karakterre vagy reguláris kifejezésre.

       RSTART      Az elsÅ, match() által talált karakter indexe; 0, ha
                   nincs találat.

       RLENGTH     A match() által talált karakterlánc hossza; -1, ha nincs
                   találat.

       SUBSEP      A többindexű tömbelemek indexelválasztó karaktere.
                   Alapértelmezésben  34.

   Tömbök
       A tömbök indexei szögletes zárójelben ([ és ]).  megadott
       kifejezések. Ha a kifejezés egy kifejezéslista (kif, kif ...)  akkor
       a tömbindex az egyes kifejezések (karakterlánc-)értékének
       konkatenációjából álló karakterlánc, ahol az egyes részeket a
       SUBSEP változó értéke szerinti karakter választja el. Például:

              i = "A"; j = "B"; k = "C"
              x[i, j, k] = "hello, world\n"

       a "hello, world\n" karakterláncot rendeli az x tömb "A\034B\034C"
       karakterlánccal indexelt eleméhez. az AWK-ban minden tömb
       asszociatÃv, azaz karakterláncokkal indexelt.

       Az in, különleges operátor használható if és while utasÃtásban
       annak eldöntésére, hogy egy tömbben létezik-e egy adott értékbÅl
       álló index.

              if (val in array)
                 print array[val]

       Ha a tömb többindexű, az (i, j) in array forma alkalmazandó.

       Az in szerkezet for ciklusban is használható egy tömb minden
       elemének eléréséhez.

       Egy tömbelem a delete utasÃtással törölhetÅ. A delete a tömb
       teljes tartalmának törlésére is használható, a tömbnév index
       nélküli megadásával.

   Változótipizálás és konverzió
       A változók és mezÅk lehetnek (lebegÅpontos) számok,
       karakterláncok, vagy mindkettÅ.  A változó értékének kezelése a
       környezetétÅl függ. Ha numerikus kifejezésben szerepel, számként
       lesz kezelve, ha karakterláncként használják, akkor
       karakterláncként.

       Ha kényszerÃteni szeretnénk, hogy egy változó számként legyen
       kezelve, adjunk hozzá 0-t; ha azt akarjuk, hogy karakterláncként,
       összefűzzük az üres karakterlánccal.

       Ha egy karakterláncot számmá kell konvertálni, a konverzió az
       atof(3) függvénnyel valósul meg. Egy szám karakterlánccá
       konvertálódik, ha a CONVFMT értékét, mint az sprintf(3) függvény
       formázó karakterláncát használjuk, argumentumként pedig a
       változó számértékét adjuk meg. Azonban, jóllehet az AWK-ban
       minden szám lebegÅpontos, az egész értékek mindig integer-szerűen
       konvertálódnak. Ãgy

              CONVFMT = "%2.2f"
              a = 12
              b = a ""

       a b változó karakterlánc-értéke "12" és nem "12.00".

       A gawk a következÅképpen hajtja végre az összehasonlÃtást: ha két
       változó numerikus, numerikusan hasonlÃt össze.  Ha az egyik érték
       numerikus és a másik karakterlánc-érték, amely ``numerikus
       karakterlánc'', akkor az összehasonlÃtás szintén numerikusan
       történik.  Egyébként a numerikus érték karakterlánccá
       konvertálódik és karakterlánc-összehasonlÃtás hajtódik végre.
       Két karakterlánc, természetesen karakterláncként hasonlÃtódik
       össze.  A POSIX szabvány szerint, akkor is numerikus összehasonlÃ‐
       tást kell végezni, ha két karakterlánc numerikus karakterlánc.
       Azonban ez teljesen helytelen, és a gawk nem ezt teszi.

       Fontos, hogy a karakterlánc konstansok, úgy mint az "57", nem
       numerikus karakterláncok; ezek karakterlánc konstansok.  A
       ``numerikus karakterlánc'' fogalom csak a mezÅkre, a getline
       bemenetre, a FILENAME -re, az ARGV elemekre, az ENVIRON elemekre és a
       split() függvénnyel létrehozott tömb numerikus karakterlánc
       elemeire vonatkozik.  Az alapgondolat az, hogy a numerikus alakú
       felhasználói bemenetet, és csak a felhasználói bemenetet szabad Ã‐
       gy kezelni.

       Az inicializálatlan változók numerikus érteke 0,
       karakterlánc-értékük "" (null-, vagy üres karakterlánc).

MINTÃK ÃS TEVÃKENYSÃGEK
       Az AWK sororientált nyelv. ElÅbb jön a minta, majd a tevékenység.
       A tevékenység-utasÃtások { és } közé vannak zárva. Vagy a minta,
       vagy a tevékenység elmaradhat, de természetesen mindkettŠnem. Ha a
       minta hiányzik, a tevékenység minden egyes bemenŠrekordon
       végrehajtódik. A hiányzó tevékenység ugyanaz, mint a

              { print }

       amely kiÃrja az egész rekordot.

       A megjegyzések ``#''-kal kezdÅdnek és a sor végéig folytatódnak.
       Ãres sorok használhatók az utasÃtások elkülönÃtésére.
       Rendszerint egy utasÃtás az újsor karakterrel befejezÅdik, de ez nem
       igaz a ``,'', {, ?, :, &&, vagy || végű sorokra. A do vagy else
       végű sorokban szereplÅ utasÃtások szintén automatikusan
       folytatódnak a következÅ sorban.  Más esetekben a sort a végére Ã‐
       rt ``´' karakterrel lehet folytatni.  Ekkor az újsor karaktert a gawk
       figyelmen kÃvül hagyja.

       Több, ``;''-vel elválasztott utasÃtás is Ãrható egy sorba.  Ez
       vonatkozik egyaránt a minta-tevékenység pár tevékenység
       részében szereplÅ utasÃtásokra és magukra a minta-tevékenység
       utasÃtásokra.

   Minták
       Az AWK minták a következók lehetnek:

              BEGIN
              END
              /reguláris kifejezés/
              relációs kifejezés
              minta && minta
              minta || minta
              minta ? minta : minta
              (minta)
              ! minta
              minta1, minta2

       A BEGIN és az END két speciális minta, amely nem inputfüggÅ. Minden
       BEGIN minta tevékenység része egy egységet képez úgy, mintha
       minden utasÃtás egyetlen BEGIN blokkba volna Ãrva. Ezek elÅbb
       végrehajtásra kerülnek, mielÅtt bármilyen bemenet beolvasása
       megtörténne. Ehhez hasonlóan az END blokkok is egybeolvadnak, és
       akkor hajtódnak végre, amikor minden bemenet beolvasása véget ért
       (vagy amikor exit utasÃtás hajtódik végre). A BEGIN és az END
       blokkok nem kombinálhatók más mintákkal a mintakifejezésekben. A
       BEGIN és az END mintákból nem hiányozhat a tevékenység rész.

       A /reguláris kifejezés/ mintákhoz rendelt utasÃtás minden olyan
       rekordra végrehajtódik, amely illeszkedik a reguláris kifejezésre.
       A reguláris kifejezések azonosak az egrep(3) programéival. Ezek
       összefoglalását lásd lejjebb.

       A relációs kifejezésekben szerepelhet bármelyik, a lenti,
       tevékenységekrÅl szóló részben definiált operátorok közül.
       Ezek rendszerint azt ellenÅrzik, hogy bizonyos mezÅk illeszkednek-e
       bizonyos reguláris kifejezésekre.

       Az &&, ||, és !  operátorok rendre a logikai ÃS, logikai VAGY és
       logikai NEM, mint a C-ben.  Rövidzár kiértékelést végeznek,
       szintén, mint a C-ben. Egyszerűbb mintakifejezések
       összekapcsolására szolgálnak. Mint a legtöbb nyelvben, zárójelek
       használhatók a kiértékelés sorrendjének megváltoztatására.

       A ?: operátor hasonlÃt a C ugyanezen operátorához.  Ha az elsÅ minta
       igaz, akkor a második minta kerül felhasználásra az ellenÅrzéshez,
       egyébként a harmadik.  A második és harmadik minta közül csak az
       egyik értékelÅdik ki.

       A minta1, minta2 kifejezésforma neve tartományminta.  Ez illeszkedik
       a minta1 -re illeszkedÅ rekorddal kezdve folytatólagosan minden bemenÅ
       rekordra, egy, a minta2 -re illeszkedŠrekordig - beleértve a két
       határmintára illeszkedŠrekordokat.  Nem működik együtt másfajta
       mintakifejezésekkel.

   Reguláris kifejezések
       A reguláris kifejezések az egrep -ben megtalálható kibÅvÃtett tÃ‐
       pusúak. A következÅ karakterekbÅl állnak:

       c          a nem-metakarakter c-re illeszkedik.

       \c         a literális c karakterre illeszkedik.  .  minden karakterre
                  illeszkedik, beleértve az újsort.

       ^          egy karakterlánc kezdetére illeszkedik.

       $          egy karakterlánc végére illeszkedik.

       [abc...]   karakterlista, amely az abc...  karakterek bármelyikére
                  illeszkedik.

       [^abc...]  negált karakterlista, minden karakterre illeszkedik,
                  kivéve abc...  -t.

       r1|r2      vagylagosság: r1 -re vagy r2 -re illeszkedik.

       r1r2       összekapcsolás: az r1 és r2 sorozatra illeszkedik.

       r+         egy vagy több r -re illeszkedik.

       r*         nulla vagy több r -re illeszkedik.

       r?         nulla vagy egy r -re illeszkedik.

       (r)        csoportosÃtás: r -re illeszkedik.  r.

       r{n}
       r{n,}
       r{n,m}     Egy vagy két szám kapcsos zárójelek között
                  intervallum-kifejezést jelent. Ha egy szám szerepel a
                  zárójelek között, az elÅtte álló r reguláris
                  kifejezés n -szer megismétlÅdik. Ha két szám van
                  zárójelezve, vesszÅvel elválasztva, r n és m közötti
                  számszor ismétlÅdik meg.  Ha egy számot követ vesszÅ, ez
                  r legalább n -szeri ismétlését jelzi.
                  Az intervallum-kifejezések csak akkor használhatók, ha a
                  parancssorban --posix vagy --re-interval opciót jelölünk
                  meg.

       \y         egy szó elején vagy végén álló üres karakterláncra
                  illeszkedik.

       \B         egy szón belüli üres karakterláncra illeszkedik.

       \<         egy szó elején álló üres karakterláncra illeszkedik.

       \>         egy szó végén álló üres karakterláncra illeszkedik.

       \w         minden szóalkótó karakterre (betű, szám, aláhúzás)
                  illeszkedik.

       \W         minden nem-szóalkótó karakterre illeszkedik.

       \`         egy puffer (karakterlánc) elején álló üres
                  karakterláncra illeszkedik.

       \'         egy puffer végén álló üres karakterláncra illeszkedik.

       A karakterlánc konstansokban érvényes escape szekvenciák (lásd
       lejjebb) szintén használhatók a reguláris kifejezésekben.

       A karakterosztály a POSIX szabványban bevezetett új lehetÅség.  A
       karakterosztály egy speciális jelölés adott attribútumú
       karakterek leÃrásához, ahol viszont a tulajdonképpeni karakterek
       ország és ország és/vagy karakterkészlet és karakterkészlet
       között mások lehetnek.  Például az alfabetikus karakter fogalma
       mást jelent az USA-ban és mást Franciaországban.

       A karakterosztályok csak a karakterlista szögletes zárójelein
       belüli reguláris kifejezésben használhatók. Formájuk: [:, az
       osztályt jelölÅ kulcsszó és :].  Ãme a POSIX szabványban
       definiált karakterosztályok.

       [:alnum:]
              Alfanumerikus karakterek.

       [:alpha:]
              Alfabetikus karakterek.

       [:blank:]
              Space vagy tab karakterek.

       [:cntrl:]
              VezérlŠkarakterek.

       [:digit:]
              Numerikus karakterek.

       [:graph:]
              Látható és nyomtatható karakterek. (A space nyomtatható, de
              nem látható, mÃg egy a mindkettÅ.)

       [:lower:]
              Kisbetűs alfabetikus karakterek.

       [:print:]
              Nyomtatható karakterek (nem vezérlŠkarakterek.)

       [:punct:]
              Ãrásjelek (nem betű-, szám-, vezérlÅ vagy space karakterek).

       [:space:]
              Space karakterek (úgy mint például space, tab és lapdobás).

       [:upper:]
              Nagybetűs alfabetikus karakterek.

       [:xdigit:]
              Hexadecimális számkarakterek.

       Példának okáért, a POSIX szabvány elÅtt, az alfanumerikus
       karakterekre illeszkedést a /[A-Za-z0-9]/ leÃrásával lehetett volna
       elérni. Ha karakterkészletünkben egyéb alfabetikus karakterek is
       vannak, ez nem fog illeszkedni rájuk.  A POSIX karakterosztályt
       használva a /[[:alnum:]]/ forma illeszkedni fog a karakterkészlet
       minden alfabetikus és numerikus karakterére.

       Két további speciális szekvencia is megjelenhet a
       karakterlistákban.  Ezek nem-ASCII karakterkészletekre vonatkoznak,
       amelyeknek lehetnek olyan szimbólumaik ( egybeolvasott elemek ),
       amelyek több, mint egy karakterrel vannak ábrázolva, és számos
       olyan karakter is, amelyek összehasonlÃtó vagy rendezÅ szempontból
       egyenértékűek.  (Pl. a francia nyelvben a sima ``e'' és a
       tompaékezetes e` egyenértékűek.)

       Egybeolvasott szimbólumok
              Az egybeolvasott szimbólum egy többkarakteres egybeolvasott
              elem, amely [.  és .]  közé van zárva. Például, ha ch egy
              egybeolvasott elem, akkor [[.ch.]]  az a reguláris kifejezés,
              amely illeszkedik rá, mÃg a [ch] reguláris kifejezés c-re,
              vagy h-ra illeszkedik.

       Ekvivalenciaosztályok
              Az ekvivalenciaosztály ekvivalens karakterek listájának
              helyileg definiált neve. A név [= és =] közé van zárva.
              Például az e név használható volna az ``e'', ``e''' és
              ``e`'' mindegyikének ábrázolására.  Ebben az esetben a
              [[=e=]] olyan reguláris kifejezés, amely e-re e'-re és e`-re
              is illeszkedik.

       Ezek a szolgáltatások igan hasznosak a nem angolul beszélÅ
       területeken. A gawk által a reguláris kifejezések illesztéséhez
       használt könyvtári függvények jelenleg csak a POSIX
       karakterosztályokat ismerik fel; nem kezelik az egybeolvasott
       szimbólumokat vagy az ekvivalenciaosztályokat.

       A \y, \B, \<, \>, \w, \W, \`, és \' operátorok gawk-specifikusak; a
       GNU reguláris kifejezés könyvtárainak szolgáltatásaira épülÅ
       bÅvÃtések.

       A számos parancsssori opció azt szabályozza, hogy a

       hogyan kezelje a reguláris kifejezésekben szereplŠkaraktereket.

       Nincs opció
              Alapesetben a gawk a POSIX reguláris kifejezések és a fent
              leÃrt GNU reguláris kifejezés operátorok minden
              szolgáltatását nyújtja.  Azonban az intervallum-kifejezések
              nincsenek támogatva.

       --posix
              Csak a POSIX reguláris kifejezések támogatottak, a GNU
              operátorok nem definiáltak. (Pl. a \w a literális w-re
              illeszkedik). Az intervallum-kifejezések engedélyezettek.

       --traditional
              A hagyományos Unix awk reguláris kifejezései működnek. A
              GNU operátorok nem definiáltak, az intervallum-kifejezések
              nem elérhetÅk és a POSIX karakterosztályok sem ([[:alnum:]]
              stb). Az oktális vagy hexadecimális escape szekvenciákkal
              megadott karakterek kezelése literális, még ha reguláris
              kifejezés metakaraktereket ábrázolnak is.

       --re-interval
              Engedélyezi az intervallum-kifejezéseket a reguláris
              kifejezésekben, még ha a --traditional opció meg is van adva.

   Tevékenységek
       A tevékenységek utasÃtásai { és } közé vannak zárva. A más
       nyelvekben meglévÅ, megszokott értékadó, feltételes és
       ciklusutasÃtásokból állnak. A használható operátorok, vezérlÅ
       utasÃtások és bemeneti/kimeneti utasÃtások a C-beli megfelelÅkrÅl
       vannak mintázva.

   Operátorok
       Az AWK operátorai csökkenŠprecedencia szerint:

       (...)       CsoportosÃtás.

       $           MezÅhivatkozás.

       ++ --       Inkrementálás és dekrementálás, mindkettŠprefix és
                   postfix.

       ^           Hatványozás (** szintén használható, **= pedig
                   értekadó operátorként).

       + - !       Egyoperandusú plusz/mÃnusz és logikai tagadás.

       * / %       Szorzás, osztás és maradékképzés.

       + -         Ãsszeadás és kivonás.

       space       Karakterláncok összekapcsolása (konkatenáció).

       < >
       <= >=
       != ==       A megszokott relációs operátorok.

       ~ !~        Reguláris kifejezés illeszkedése, nem-illeszkedése.
                   FONTOS: Ne használjunk konstans reguláris kifejezést
                   (/foo/) ~ vagy !~ baloldalán, csakis a jobbon! A /foo/ ~
                   exp kifejezés jelentése ugyanaz, mint a (($0 ~ /foo/) ~
                   exp) kifejezésé. Rendszerint nem ezt várják.

       in          Tömbhöz tartozás.

       &&          Logikai ÃS.

       ||          Logikai VAGY.

       ? :         A C feltételes kifejezése. Ennek formája kif1 ? kif2 :
                   kif3.  Ha kif1 igaz, a kifejezés értéke kif2,
                   egyébként kif3.  Csak egy értékelÅdik ki kif2 és kif3
                   közül.

       = += -=
       *= /= %= ^= Ãrtékadás. Ãgy az abszolút értékadás (var = value)
                   mint az operátor-értékadás (a többi forma) egyaránt
                   támogatott.

   VezérlÅ utasÃtások
       A vezérlÅ utasÃtások a következÅk:

              if (feltétel) utasÃtás [ else utasÃtás ]
              while (feltétel) utasÃtás
              do utasÃtás while (feltétel)
              for (kif1; kif2; kif3) utasÃtás
              for (var in array) utasÃtás
              break
              continue
              delete array[index]
              delete array
              exit [ kifejezés ]
              { utasÃtások }

   Bemeneti/kimeneti utasÃtások
       A bemeneti/kimeneti utasÃtások a következÅk:

       close(file)           Lezárja a fájlt (vagy csatornát, lásd lenn).

       getline               $0 értékét a következŠbemeneti rekordból
                             veszi; beállÃtja NF, NR, FNR értékét.

       getline <file         $0 értékét file következŠbemeneti
                             rekordjából veszi; beállÃtja NF értékét.

       getline var           var értékét a következŠbemeneti rekordból
                             veszi; beállÃtja NF, FNR értékét.

       getline var <file     var értékét file következŠrekordjából
                             veszi.

       next                  Abbamarad az aktuális rekord feldolgozása.
                             Megtörténik a következŠbemeneti rekord
                             beolvasása és a feldolgozás az AWK program
                             elsÅ mintájával kezdÅdik. Ha a végrehajtás
                             elérte a bemeneti adatok végét, az END
                             blokk(ok) (ha van(nak)) kerülnek
                             végrehajtásra.

       nextfile              Abbamarad az aktuális bemeneti file
                             feldolgozása. A következŠbemeneti rekord a
                             következŠfájlból érkezik.  FILENAME és
                             ARGIND aktualizálódik, FNR értéke 1-re áll
                             be, és a feldolgozás az AWK program elsÅ
                             mintajával kezdÅdik. Ha a vegrehajtás elérte a
                             bemeneti adatok végét, az END blokk(ok) (ha
                             van(nak)) kerülnek végrehajtásra.  FONTOS: A
                             gawk korábbi verziói a next file -t két
                             szóban használták. Noha még felismeri ezt a
                             használati módot, figyelmeztetŠüzenetet
                             generál és elÅbb-utóbb elhagyásra kerül.

       print                 KiÃrja az aktuális rekordot. A kimeneti rekord
                             az ORS változó értékével fejezÅdik be.

       print expr-list       KiÃrja a kifejezések értékét. Minden
                             kifejezés az OFS változó értékével
                             választódik el. A kimeneti rekord az ORS
                             változó értékével fejezÅdik be.

       print expr-list >file A file-ba Ãrja a kifejezések értékét. Minden
                             kifejezés az OFS változó értékével
                             választódik el. A kimeneti rekord az ORS
                             áltozó értékével fejezÅdik be.

       printf fmt, expr-list Formáz és kiÃr.

       printf fmt, expr-list >file
                             Formáz és a file-ba Ãr.

       system(cmd-line)      Végrehajtja a cmd-line parancsot, és visszatér
                             az exit státusszal. (Ez lehet, hogy nem
                             használható nem-POSIX rendszerekben.)

       fflush([file])        Lemezre Ãr minden, a nyitott kimeneti vagy
                             csatorna file -hoz rendelt puffert.  Ha a file
                             paraméter nincs megadva, a szabványos kimenetre
                             Ãr.  Ha file üres karakterlánc, akkor minden
                             nyitott kimeneti és csatorna file puffere kiÃ‐
                             ródik.

       Egyéb kimeneti/bemeneti átirányÃtások is megengedettek. A print -re
       és printf -re vonatkozóan a >>file a kimenetet a file végére Ãrja,
       mÃg a | parancs csatornába Ãr. Ehhez hasonlóan a parancs | getline
       getline-ba irányÃt át. A getline parancs 0-val tér vissza a file
       végénél és -1-gyel hiba esetén.

   A printf utasÃtás
       A printf utasÃtás és sprintf() függvény (lásd lenn) AWK verziója
       a következŠkonverziós karaktereket fogadja el:

       %c     Egy ASCII karakter. Ha %c -hez rendelt argumentum numerikus, a
              gawk karakterként kezeli és kiÃrja. Egyébként feltételezi,
              hogy az argumentum karakterlánc, és csak a karakterlánc elsÅ
              karakterét Ãrja ki.

       %d
       %i     Decimális szám (az egészrész).

       %e
       %E     [-]d.dddddde[+-]dd formájú lebegÅpontos szám. A %E -s forma E
              -t használ e helyett.

       %f     [-]ddd.dddddd formájú lebegÅpontos szám.

       %g
       %G     A %e vagy %f konverziók közül a rövidebbet alkalmazza. Az
              értéktelen nullákat elhagyja.  A %G -s  forma %E -t alkalmaz
              %e helyett.

       %o     Jelöletlen oktális szám (megint csak egész).

       %s     Karakterlánc.

       %x
       %X     Jelöletlen hexadecimális szám (egész). A %X -es forma ABCDEF
              -et használ abcdef helyett.

       %%     Egy % karakter; argumentumot nem konvertál.

       Léteznek további, opcionális paraméterek, amelyek a % és a
       vezérlÅkarakter között állhatnak:

       -      A kifejezésnek a mezÅben balra igazÃtva kell megjelennie.

       space  Numerikus konverziókban space-et Ãr a pozitÃv, mÃnusz jelet a
              negatÃv kifejezések elé.

       +      A plusz jel - a szélességmódosÃtó elÅtt (lásd lejjebb)
              használva - elÅÃrja, hogy a numerikus konverziókban mindig
              elÅjelet kell Ãrni, akkor is, ha a formázott szám pozitÃv. A +
              felülbÃrálja a space jelzÅt.

       #      ``AlternatÃv forma'' használata bizonyos vezérlÅ betűkhöz. A
              %o -hoz bevezetŠ0-t ad. A %x -hez és %X -hez bevezetŠ0x -et
              vagy 0X -et ad, ha az eredmény nem nulla. A %e, %E és %f
              esetében az eredmény mindig tartalmazni fog tizedespontot. A
              %g -nél és %G -nél a számvégi nullák nem maradnak ki az
              eredménybÅl.

       0      A bevezetÅ 0 jelzÅként működik, amely azt mutatja, hogy a
              kimenetben a bevezetŠspace-ek helyett nullák legyenek. Ez a
              nem-numerikus kimenetek formázására is vonatkozik. Ennek a
              jelzÅnek csak akkor van hatása, amikor a mezÅ szélesebb, mint
              a kiÃrandó szöveg.

       width  A mezÅt ilyen szélességűre kell feltölteni. A feltöltés
              rendszerint space-ekkel történik. Ha a 0 jelzÅt használjuk,
              nulla lesz a kitöltŠkarakter.

       .prec  Szám, amely meghatározza a kiÃráskor alkalmazandó
              pontosságot. A %e, %E és %f formák esetében ez határozza
              meg a tizedespont jobb oldalán kiÃrni kÃvánt jegyek számát.
              A %g és %G formáknál ez az értékes jegyek maximális
              számát adja meg. A %d, %o, %i, %u, %x és %X formák esetében
              ez a kiÃrandó jegyek maximális számát határozza meg.

       Az ANSI C printf() rutinjainak dinamikus szélesség és pontosság
       szolgáltatásai támogatottak. Egy * a width vagy prec elÅÃrások
       helyén azt eredményezi, hogy értéküket a printf vagy sprintf()
       argumentumlistájából veszik.

   Különleges fájlnevek
       Amikor akár print -bÅl, akár printf -bÅl bemeneti/kimeneti
       átirányÃtást végzünk egy fájlba, a gawk felismer néhány
       speciális fájlnevet. Ezek elérhetÅvé teszik a szülÅ processzbÅl
       (ez rendszerint a shell) örökölt nyitott fájldeszkriptorokat.  Más
       különleges fájlnevek a futó gawk processzrÅl szóló
       információhoz szolgáltatnak elérést. Ezek a fájlnevek:

       /dev/pid    E file olvasása visszaadja az aktuális processz újsorral
                   terminált, decimális azonosÃtóját.

       /dev/ppid   E file olvasása visszaadja a szülŠprocessz újsorral
                   terminált, decimális azonosÃtóját.

       /dev/pgrpid E file olvasása visszaadja az aktuális processz újsorral
                   terminált, decimális csoportazonosÃtóját.

       /dev/user   E file olvasása egy, újsorral terminált rekordot ad
                   vissza. A mezÅk space-szel vannak elválasztva.  $1 a
                   getuid(2) rendszerhÃvás értéke, $2 a geteuid(2)
                   rendszerhÃvás értéke, $3 a getgid(2) -é és $4 a
                   getegid(2) -é. Ha további mezÅ fordul elÅ, akkor azok a
                   getgroups(2) által visszaadott group ID-k.  Lehet, hogy a
                   többcsoportúságot nem minden rendszer támogatja.

       /dev/stdin  A szabványos bemenet.

       /dev/stdout A szabványos kimenet.

       /dev/stderr A szabványos hibakimenet.

       /dev/fd/n   A nyitott n file-deszkriptorhoz rendelt file.

       Ezek különösen hibaüzenetek szempontjából fontosak.  Például:
              print "A gépnek annyi!" > "/dev/stderr"

       ahol egyébként a következŠformát kellene használni:

              print "A gépnek annyi!" | "cat 1>&2"

       Ezek a fájlnevek a parancssorban is felhasználhatók adatfile-ok
       megnevezésére.

   Numerikus függvények
       Az AWK a következÅ elÅdefiniált aritmetikai függvényekkel
       rendelkezik:

       atan2(y, x)   visszaadja radiánban y/x arkusz tangensét.  cos(expr)
                     visszaadja expr radián koszinuszát.

       exp(expr)     az exponenciális függvény.

       int(expr)     egészrészre csonkol.

       log(expr)     természetes alapú logaritmus függvény.

       rand()        visszaad egy véletlenszámot 0 és 1 között.

       sin(expr)     visszaadja expr radián szinuszát.

       sqrt(expr)    a négyzegyökfüggvény.

       srand([expr]) expr értékét használja a véletlenszámgenerátor
                     inicializálására. Ha expr nincs megadva, az idÅt
                     használja. A visszatérési érték a véletlenszám-
                     generátor korábbi inicializáló értéke.

   Karakterlánc-függvények
       A gawk a következÅ elÅdefiniált karakterlánc függvényekkel
       rendelkezik:

       gensub(r, s, h [, t])   a t tárgykarakterláncban keresi r reguláris
                               kifejezést. Ha h g vagy G kezdetű
                               karakterlánc, akkor r minden illeszkedését s
                               -re cseréli. Egyébként h egy szám, amely
                               azt jelzi, hogy r melyik illeszkedését kell
                               lecserélni. Ha t nincs megadva, $0 -t
                               alkalmazza. Az s csereszövegben a \n,
                               szekvencia (ahol n egy, 0 és 9 közötti
                               számjegy) használható a csak az n -edik
                               zárójelezett al-kifejezésre illeszkedÅ
                               szöveg jelölésére. A \0 szekvencia az
                               egész illeszkedŠszöveget jelképezi,
                               csakúgy mint az & karakter. EltérÅen a sub()
                               és gsub() függvényektÅl, a visszatérési
                               érték a módosÃtott karakterlánc, az eredeti
                               tárgykarakterlánc pedig nem módosul.

       gsub(r, s [, t])        t karakterlánc minden r reguláris
                               kifejezésre illeszkedŠalkarakterláncát s
                               karakterláncra cseréli és visszaadja a
                               helyettesÃtések számát. Ha t nincs megadva,
                               $0 -ban keres. Egy & jel a csereszövegben az
                               illeszkedÅ szöveggel helyettesÃtÅdik,
                               literális & eléréséhez \& forma
                               alkalmazandó. Az & és backslash jelek
                               csereszövegekbeni alkalmazási szabályairól
                               a sub(), gsub() és gensub() függvényekben
                               bÅvebb leÃrás olvasható az AWK Language
                               Programming c. könyvben.

       index(s, t)             visszaadja t karakterlánc s karakterláncbeli
                               indexét vagy 0-t, ha t nem szerepel s -ben.

       length([s])             visszatér s karakterlánc hosszával (vagy $0
                               -éval, ha s nincs megadva).

       match(s, r)             visszaadja r reguláris kifejezés s -ben
                               elfoglalt helyét (vagy 0-t, ha r nem szerepel
                               benne), és beállÃtja RSTART és RLENGTH
                               értékét.

       split(s, a [, r])       r regurális kifejezés alapján a t tömbbe
                               darabolja az s karakterláncot és visszatér a
                               mezÅk számával. Ha r elmarad, FS -t
                               használja. A darabolás a - fent leÃrt -
                               mezÅkre bontással megegyezÅen történik.

       sprintf(fmt, expr-list) a fmt -nak megfelelÅen kiÃrja a
                               kifejezéslistát és visszatér az eredmény-
                               karakterlánccal.

       sub(r, s [, t])         mint a gsub() függvény, de csak az elsÅ
                               illeszkedést cseréli.

       substr(s, i [, n])      visszaadja s karakterlánc i-nél kezdÅdÅ,
                               legfeljebb n karakteres alkarakterláncát. Ha
                               n nincs megadva, s teljes maradékát
                               alkalmazza.

       tolower(str)            visszatér str karakterlánc másolatával,
                               amelyben minden nagybetűt a megfelelÅ
                               kisbetűre alakÃt.  A nem-alfabetikus
                               karakterek nem változnak.

       toupper(str)            visszatér str karakterlánc másolatával,
                               amelyben minden kisbetűt a megfelelÅ
                               nagybetűre alakÃt.  A nem-alfabetikus
                               karakterek nem változnak.

   IdÅfüggvények
       Mivel az AWK programok egyik elsÅdleges felhasználási területe a log
       fájlok feldolgozása - amelyek idÅadatot tartalmaznak -, a gawk a
       következÅ két függvényt nyújtja az idÅadatok kinyeréséhez és
       formázásához:

       systime() visszaadja az Epoch (POSIX rendszereken 1970. jan. 1.
                 00:00:00) óta másodpercekben eltelt idÅt.

       strftime([format [, timestamp]])
                 az idÅadatot a formátumnak megfelelÅen formázza. Az
                 idÅadatnak a systime() által visszaadott formával
                 megegyezÅnek kell lennie. Ha a formátum hiányzik, a date(1)
                 parancs kimenetével megegyezÅ, alapértelmezett formátumot
                 alkalmaz.  A biztosan használható formátum konverziókat
                 lásd az ANSI C strftime() függvényének
                 specifikációjánál. A gawk -kal jár az strftime(3)
                 függvény public-domain verziója és az ahhoz tartozó man
                 lap. Ha a gawk fordÃtásakor ezt a verziót használták,
                 akkor a man lapban leÃrt minden konverzió elérhetÅ a gawk
                 számára.

   Karakterlánc állandók
       Az AWK karakterláncai dupla idézÅjelek (") közé zárt
       karaktersorozatok. A gawk bizonyos escape szekvenciákat felismer a
       karakterláncokban. Ezek:

       \\   Literális backslash.

       \a   Az "alert" karakter; rendszerint az ASCII csengÅ (ASCII BEL)
            karakter.

       \b   Backspace.

       \f   Lapdobás.

       \n   Ãjsor.

       \r   Kocsivissza.

       \t   VÃzszintes tabulátor.

       \v   FüggÅleges tabulátor.

       \x hexa jegyek
            A \x -et követŠhexadecimális számmal jelzett karakter. Mint az
            ANSI C-ben, az utána álló minden hexadecimális jegy az escape
            szekvencia részeként kerül feldolgozásra. (Ez a jellemzŠkell
            hogy mondjon valamit a bizottsági nyelvtervezésrÅl.)  Pl. az
            "\x1B" az ASCII ESC (escape) karakter.

       \ddd Az egy-, két-, vagy háromjegyű oktális számnak megfelelÅ
            karakter.  Pl. az "\033" az ASCII ESC (escape) karakter.

       \ c  A literális c karakter.

       Az escape szekvenciák konstans reguláris kifejezésekben szintén
       használhatók (pl.  /[ \t\f\n\r\v]/ whitespace karakterekre
       illeszkedik).

       KompatÃbilis módban az oktális vagy hexadecimális escape
       szekvenciákkal jelölt karakterek literálisan kerülnek
       feldolgozásra a regurális kifejezés konstansokban. Ãgy a /a\52b/
       ugyanaz, mint a /a\*b/.

FÃGGVÃNYEK
       Az AWK függvényei a következÅképpen definiálandók:

              function név(paramáterlista) { utasÃtások }

       A függvények végrehajtása akár mintából, akár tevékenységbÅl
       való meghÃvásukkor történik meg. A függvényhÃvásokban megadott
       aktuális paraméterek a függvényekben deklarált formális
       paramétereknek adnak konkrét értéket. A tömbök átadása
       hivatkozás szerinti, a többi paraméteré érték szerinti.

       Mivel a függvények eredetileg nem voltak az AWK nyelv részei, a
       lokális változók eléggé suta módon adhatók meg: a
       paraméterlistában extra paraméterekként deklarálandók. A
       konvenció az, hogy a paraméterlistában a lokális változókat extra
       space-ekkel választják el a valódi paraméterektÅl.  Például:

              function  f(p, q,     a, b)   # a és b lokális
              {
                 .....
              }

              /abc/ { ... ; f(1, 2) ; ... }

       A függvényhÃvás bal oldali zárójelének közvetlenül kell
       követnie a függvénynevet, whitespace nem lehet közöttük. Ez a
       konkatenációs operátorral való összekeverés elkerülése miatt
       van Ãgy. A megkötés nem vonatkozik a fent felsorolt beépÃtett
       függvényekre.

       A függvények hÃvhatják egymást és lehetnek rekurzÃvak. A lokális
       változóként használt függvényparaméterek üres karakterlánc és
       zéró számértékkel inicializálódnak a függvényhÃvás során.

       Ha a --lint opció meg van adva, a gawk fordÃtási és nem futási
       idÅben figyelmeztet a definiálatlan függvények hÃvása esetén.
       Futási idÅben egy definiálatlan függvény meghÃvása fatális hiba.

       A func kulcsszó használható a function helyén.

PÃLDÃK
       Az összes felhasználó login nevének rendezése és kiÃrása:

          BEGIN { FS = ":" }
             { print $1 | "sort" }

       Egy file sorainak megszámlálása:

             { nlines++ }
          END   { print nlines }

       A file minden sora elé a sorszám kiÃrása:

          { print FNR, $0 }

       A sorszám konkatenációja (egy témavariáció):

          { print NR, $0 }

LÃSD MÃG
       egrep(1), getpid(2), getppid(2), getpgrp(2), getuid(2), geteuid(2),
       getgid(2), getegid(2), getgroups(2)

       The AWK Programming Language, Alfred V. Aho, Brian W. Kernighan, Peter
       J. Weinberger, Addison-Wesley, 1988. ISBN 0-201-07981-X.

       AWK Language Programming, Edition 1.0, published by the Free Software
       Foundation, 1995.

POSIX KOMPATIBILITÃS
       A gawk egyik elsÅdleges célja a POSIX szabvánnyal - csakúgy, mint a
       UNIX awk legújabb verziójával - való kompatibilitás. E célból a
       gawk egyesÃti a következÅ, felhasználó által látható
       szolgáltatásokat, amelyeket nem Ãr le az AWK könyv, de részei a
       Bell Labs awk verziójának, és a POSIX szabványnak.

       Ãj dolog a -v opció a programvégrehajtás megkezdése elÅtti
       változó-értékadáshoz.  A könyv azt jelzi, hogy a parancssori
       értékadás akkor történik meg, amikor az awk egyébként fájlként
       nyitná meg az argumentumot - amely a BEGIN blokk végrehajtása után
       valósul meg. Azonban a korai megvalósÃtásokban, amikor ilyen
       értékadás jelent meg fájlnevek elÅtt, az megtörtént, mielÅtt a
       BEGIN blokk lefutott volna. Programok váltak ettÅl a
       ``szolgáltatástól'' függÅvé. Amikor az awk -ot a
       dokumentációjához igazÃtották, ezt az opciót adták hozzá, hogy
       alkalmazkodjon a régi viselkedéstÅl függÅ alkalmazásokhoz.  (E
       szolgáltatással szemben nem volt ellenvetés sem az AT&T, sem a GNU
       fejlesztÅi részérÅl.)

       Az alkalmazás specifikus szolgáltatásokhoz tartozó -W opció a
       POSIX szabványból ered.

       Az argumentumok feldolgozása során a gawk a ``--'' speciális opciót
       használja az argumentumok végének jelzéséhez.  KompatÃbilis
       módban figyelmeztet a definiálatlan opciókra, másrészrÅl viszont
       figyelmen kÃvül hagyja azokat. Rendes működéskor az ilyen
       argumentumok átadódnak az AWK programnak, hogy az dolgozza fel Åket.

       Az AWK könyv nem definiálja az srand() visszatérési értékét. A
       POSIX szabvány szerint az inicializáló értéket adja vissza,
       lehetÅvé téve a véletlenszám-sorozatok nyomonkövetését. Ezért a
       gawk srand() függvénye szintén az emlÃtett számmal tér vissza.

       További új szolgáltatások: Több -f opció használata (az MKS
       awkból); az ENVIRON tömb; a \a és \v escape szekvenciák (eredetileg
       a gawk -ban, majd onnan áttéve az AT&T awk -jába); a tolower() és
       toupper() beépÃtett függvények (az AT&T-bÅl); és a printf ANSI C
       konverziós szabályai (elÅször az AT&T verzióban).

GNU BÅVÃTÃSEK
       A gawk számos szolgáltatással kibÅvÃti a POSIX awk -ot. Ezek leÃ‐
       rása ebben a részben szerepel. Minden itt felsorolt bÅvÃtés
       kikapcsolható a gawk --traditional opció hÃvásával.

       A gawk következÅ szolgáltatásai nem érhetÅk el a POSIX awk -ban:

              · A \x escape szekvencia. (A --posix kikapcsolja).

              · Az fflush() függvény. (A --posix kikapcsolja).

              · A systime(), strftime() és gensub() függvények.

              · A bemeneti/kimeneti átirányÃtásra használt különleges
                fájlneveket nem ismeri fel.

              · Az ARGIND, ERRNO és RT változóknak nincs speciális
                jelentésük.

              · Az IGNORECASE változó és annak mellékhatásai nem érhetÅk
                el.

              · A FIELDWIDTHS változó és a rögzÃtett szélességű
                mezÅdarabolás.

              · Az RS változó reguláris kifejezésként való használata.

              · Egyes karakterekre szétvágás az FS változó vagy a split()
                harmadik argumentumának üres karakterláncra állÃtásával.

              · Nincs elérési út bejárás a -f opcióval megadott fájlok
                megtalálásához. Tehát az AWKPATH környezeti változónak
                nincs különleges jelentése.

              · Az aktuális file feldolgozásának megszüntetésére
                használt nextfile utasÃtás.

              · A delete array használata egy teljes tömb törléséhez.

       Az AWK könyv nem definiálja a close() függvény visszatérési
       értékét. A gawk close() függvénye az fclose(3) vagy pclose(3)
       függvénytÅl kapott értéket adja vissza, amikor egy fájlt illetve
       csatornát lezár.

       A gawk --traditional opcióval történÅ hÃvásakor - ha a -F opciónak
       adott fs értéke ``t'' - az FS értéke a tab karakter lesz. Fontos,
       hogy a gawk -F\t ...  megadása egyszerűen a shell ``t''-re
       hivatkozását eredményezi, és nem ad át ``\t''-t a -F opciónak.
       Mivel ez egy meglehetÅsen csúnya, speciális eset, nem ez az
       alapértelmezett viselkedés. Szintén nem ez történik, ha a --posix
       opció meg van adva. Hogy igazán a tab karaktert kapjuk
       mezÅ-elválasztóként, a legjobb, ha aposztrófot használunk: gawk
       -F'\t' ....

TÃRTÃNELMI SZOLGÃLTATÃSOK
       A történelmi AWK megvalósÃtásoknak két szolgáltatását
       támogatja a gawk.  ElÅször: lehetÅség van a length() beépÃtett
       függvény nem csak argumentumok, hanem zárójelek nélküli hÃ-
       vására is. Ilyenformán az

              a = length  # Holy Algol 60, Batman!

       ugyanaz, mint bármelyik az

              a = length()
              a = length($0)

       közül. Ezt a lehetÅséget ``helytelenÃtik'' a POSIX szabványban, és
       a gawk figyelmeztetŠüzenetet jelenÃt meg, ha a --lint opció meg van
       adva a parancssorban.

       A másik szolgáltatás a continue vagy break utasÃtás használata
       while, for vagy do ciklus törzsén kÃvül. A tradÃcionális AWK
       megvalósÃtások ezt a használatot a next utasÃtással
       egyenértékűként kezelték. A gawk --traditional megadása esetén
       támogatja ezt a használatot.

KÃRNYEZETI VÃLTOZÃK
       Ha a POSIXLY_CORRECT környezeti változó létezik, akkor a gawk
       pontosan úgy viselkedik, mintha a --posix volna megadva a
       parancsssorban. Ha a --lint meg van adva, a gawk figyelmeztetÅ
       üzenetet küld errÅl a hatásról.

       Az AWKPATH környezeti változó használható olyan könyvtárak
       megadására, amelyeket a gawk bejár a -f és --file opcióval
       megadott fájlok megkeresése érdekében.

HIBÃK
       A -F opcióra nincs szükség, adva lévén a parancsori
       változó-értékadás lehetÅsége; csupán a kompatibilitás
       fenntartása miatt marad.

       Ha a rendszer támogatja a /dev/fd, és az összerendelt /dev/stdin/,
       /dev/stdout és /dev/stderr file-okat, lehet, hogy más lesz a kimenet,
       mint ezen fájlok nélküli rendszereken. Amikor a gawk belül
       emulálja ezeket a fájlokat, összehangolja a szabványos kimenetre
       küldött kimenetet a /dev/out-ba küldött kimenettel; mÃg az ilyen
       fájlokkal rendelkezŠrendszereken a kimenet lényegében más
       fájlokba megy. Vigyázz, Vásárló!

       Szintaktikailag érvénytelen egykarakteres programok valószÃnűleg
       túlcsordulnak az elemzÅ vermen, és meglehetÅsen semmitmondó
       üzenetet generálnak. Az ilyen programokat meglepÅen nehéz teljesen
       általános esetben felismerni, és igazán nem éri meg ilyenirányú
       erÅfeszÃtéseket tenni.

VERZIÃ
       Ez a man lap a 3.0.2-es verziószámú gawk -ot dokumentálja.

SZERZÅK
       A UNIX awk eredeti verzióját Alfred Aho, Peter Weinberger és Brian
       Kernighan tervezte és vitelezte ki a AT&T Bell Labs-nál. Brian
       Kernighan továbbra is javÃtja és fejleszti.

       A gawkot Paul Rubin és Jay Fenlason Ãrta a Szabad Software AlapÃ‐
       tványnál úgy, hogy kompatÃbilis legyen a Seventh Edition UNIX-ban
       közzétett eredeti awk verzióval. John Woods számos hibajavÃtással
       járult hozzá. David Trueman - Arnold Robbins támogatásával -
       kompatÃbilissá tette az awk -ot a UNIX awk új verziójával. Arnold
       Robbins a jelenlegi karbantartó.

       Az eredeti DOS-os változatot Conrad Kwok  és  Scott Garfinkle készÃ‐
       tette.  A jelenlegi DOS-os karbantartó Scott Deifik. Pat Rankin
       munkája a VMS változat, és Michal Jaegermanné az Atari ST-s. Az
       OS/2-es változatot Kai Uwe Rommel készÃtette Darrel Hankerson
       támogatásával és segÃtségével.  Fred Fish szolgáltatta az Amiga
       támogatást.

HIBAJELENTÃS
       Ha hibát találsz a gawk -ban, kérünk, küldj egy e-mailt a bug-gnu-
       utils@prep.ai.mit.edu cÃmre, és cc-zd azt az arnold@gnu.ai.mit.edu
       -hoz. Kérünk, mellékeld az operációs rendszered nevét és
       verziószámát, a gawk verziószámát, hogy milyen C fordÃtót
       használtál a fordÃtásához, és egy minél kisebb tesztprogramot és
       adatsort a probléma reprodukálásához.

       MielÅtt hibajalentést küldenél, kérünk, tégy meg két dolgot.
       ElÅször: ellenÅrizd, hogy a gawk legújabb verziója van-e meg. Sok
       hiba (rendszerint hajszálnyiak) kerül kijavÃtásra minden verzióban,
       és ha a tiéd elavult, lehet, hogy a problémát már megoldották.
       Másodszor: olvasd el figyelmesen a man lapot és a referenciakönyvet,
       hogy megbizonyosodj róla, hogy amit hibának gondolsz az valóban
       hiba, és nem csak egy hirtelen fordulat a nyelvben.

       Bármit is teszel, NE küldj hibajalantést a comp.lang.awk cÃmre.
       Jóllehet a gawk fejlesztÅi alkalmanként olvassák ezt a hÃrcsoportot,
       a hibajelentések oda postázása megbÃzhatatlan módja a
       hibajelentésnek.  Ehelyett, kérünk, használd a fent megadott e-mail
       cÃmeket.

KÃSZÃNETNYILVÃNÃTÃS
       A Bell Labsnél dolgozó Brian Kernighan értékes segÃtséget
       nyújtott a tesztelés és hibajavÃtás alatt. Köszönjük neki.

MÃSOLÃSI JOGOK
       Copyright ©) 1996 Free Software Foundation, Inc.

       Mindenki számára engedélyezzük, hogy teljes másolatot készÃtsenek
       és terjesszenek errÅl az iratról, azzal a kikötéssel, hogy a
       copyright megjegyzés és ez az engedély fel legyen tüntetve minden
       másolaton.

       Engedélyezzük, hogy ezen irat megváltoztatott verzióit másolják
       és terjesszék - a teljes másolatra vonatkozó kikötéssel - ,
       feltéve, hogy a teljes leszármazott munka ezzel a copyright
       megjegyzéssel megegyezÅ engedélyekkel bÃrjon.

       Engedélyezzük ennek az iratnak más nyelvre történt fordÃtásának
       másolását és terjesztését a fenti feltételek szerint, azzal a
       különbséggel, hogy ezt az engedélyezŠmegjegyzést - a Free
       Software Foundation által elfogadott - fordÃtásban is lehet
       közölni.

MAGYAR FORDÃTÃS
       Gombai Sándor  <sgombai@hotmail.com>



Free Software Foundation          Dec 19 1996                          GAWK(1)