Provided by: manpages-hu_20010119-5_all bug

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 kompatbilis 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 Kdolsi Szablyok -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:

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

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

              o A function kulcsszó func szinonímáját nem ismeri fel.

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

              o Az fflush() függvény nem elérhető.

       -W re-interval
       --re-interval
              Engedélyezi az intervallum kifejezsek 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  Kdolsi Szablyok -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  { tevkenysg utastsok }
              function nv(paramter lista) { utastsok }

       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 mintjra.  Minden olyan mintához
       rendelt tevkenysg 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 mezk -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
              /regulris kifejezs/
              relcis kifejezs
              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  /regulris  kifejezs/  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    relcis    kifejezsekben   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 tartomnyminta.  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, belertve 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-
                  kifejezst 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 karakterosztly 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 belli
       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 (felttel) utasts [ else utasts ]
              while (felttel) utasts
              do utasts while (felttel)
              for (kif1; kif2; kif3) utasts
              for (var in array) utasts
              break
              continue
              delete array[index]
              delete array
              exit [ kifejezs ]
              { utastsok }

   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  szlessg  és  pontossg
       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 kifejezslistt
                               é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  szekvencikat  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 nv(paramterlista) { utastsok }

       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, mieltt 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:

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

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

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

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

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

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

              o A FIELDWIDTHS változó és a rögzített szélességű meződarabolás.

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

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

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

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

              o 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 (C)) 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>