awk / gawk (linux commands)

Content

 

Data

License: GNU
Version number: GNU Awk 4.1.4, API: 1.1 (GNU MPFR 3.1.5, GNU MP 6.1.2)
Developer / owner: Free Software Foundation Inc.

Short description:

The manual page and help for the awk and gawk linux commands. gawk is the GNU Project's implementation of the AWK programming language. The language adapts POSIX 1003.2 for its definition in Command Language And Utilities Standard. On the other hand, this version is based on the description of The AWK Programming Language by Aho, Kernighan and Weinberger; supplemented by additional features found in V Release 4 of the UNIX awk system.

 

 

Man page output

man 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)

 

 

Help output

gawk --help
Usage: gawk [POSIX or GNU style options] -f progfile [--] file ...
Usage: gawk [POSIX or GNU style options] [--] 'program' file ...
POSIX options:          GNU long options: (standard)
        -f progfile             --file=progfile
        -F fs                   --field-separator=fs
        -v var=val              --assign=var=val
Short options:          GNU long options: (extensions)
        -b                      --characters-as-bytes
        -c                      --traditional
        -C                      --copyright
        -d[file]                --dump-variables[=file]
        -D[file]                --debug[=file]
        -e 'program-text'       --source='program-text'
        -E file                 --exec=file
        -g                      --gen-pot
        -h                      --help
        -i includefile          --include=includefile
        -l library              --load=library
        -L[fatal|invalid]       --lint[=fatal|invalid]
        -M                      --bignum
        -N                      --use-lc-numeric
        -n                      --non-decimal-data
        -o[file]                --pretty-print[=file]
        -O                      --optimize
        -p[file]                --profile[=file]
        -P                      --posix
        -r                      --re-interval
        -S                      --sandbox
        -t                      --lint-old
        -V                      --version

To report bugs, see node `Bugs' in `gawk.info', which is
section `Reporting Problems and Bugs' in the printed version.

gawk is a pattern scanning and processing language.
By default it reads standard input and writes standard output.

Examples:
        gawk '{ sum += $1 }; END { print sum }' file
        gawk -F: '{ print $1 }' /etc/passwd

 

Related Content