Provided by: manpages-pl_20060617-3_all bug

NAZWA

       gawk - jzyk wyszukiwania i przetwarzania wzorcow.

SK/LADNIA

       gawk  [opcje w stylu POSIX lub GNU] -f plik-programu [--] plik...

       gawk  [opcje w stylu POSIX lub GNU] [--] tekst-programu plik...

       pgawk [opcje w stylu POSIX lub GNU] -f plik-programu [--] plik...

       pgawk [opcje w stylu POSIX lub GNU] [--] tekst-programu plik...

OPIS

       Gawk  jest  implementacj  GNU  jzyka  programowania  AWK.  Odpowiada on
       definicji tego jzyka z POSIX  1003.2  Command  Language  And  Utilities
       Standard.   Wersja  ta  jest  z  kolei  oparta  na  opisie  z  The  AWK
       Programming Language, napisanym przez Aho, Kernighana i Weinbergera,  z
       dodatkowymi  wlaciwociami,  zdefiniowanymi w wersji awk z SysVR4.  Gawk
       udostpnia rownie najwiesze rozszerzenia awk z  Bell  Laboratories  oraz
       par rozszerze specyficznych dla GNU.

       Pgawk  jest  profilujc  wersj gawk.  W kadym aspekcie jest identyczny z
       gawk, z wyjtkiem tego, e programy  dzialaj  wolniej,  a  na  zakoczenie
       automatycznie  tworzony  jest  profil  wykonania  w  pliku awkprof.out.
       Zobacz opcja --profile, poniej.

       Wiersz polece sklada si z opcji dla gawk,  tekstu  programu  (jeli  nie
       podano  go  poprzez  opcj  -f  lub  --file)  i  wartoci,  ktore  maj by
       udostpnione w predefiniowanych zmiennych ARGC i ARGV.

OPCJE

       Opcje gawk mog  by  zarowno  tradycyjnymi  POSIX-owymi  jednoliterowymi
       opcjami, jak i dlugimi opcjami w stylu GNU. Opcje POSIX-owe zaczynaj si
       pojedynczym "-", a opcje GNU "--".  Opcje w  stylu  GNU  s  udostpniane
       zarowno dla wlaciwoci specyficznych dla GNU, jak i dla wlaciwoci POSIX-
       owych. Inne implementacje AWK prawdopodobnie jednak bd przyjmowa  tylko
       tradycyjne, jednoliterowe opcje.

       Zgodnie  ze standardem POSIX, specyficzne dla gawk opcje s przekazywane
       przez argumenty opcji -W.  Mona poda wiele  opcji  -W,  lub  wiele  jej
       argumentow   (oddzielonych  przecinkami,  lub  ujtych  w  cudzyslowy  i
       oddzielonych   bialymi   spacjami).    Wielko   liter   w   argumentach
       przekazanych  opcji  -W jest ignorowana.  Kada opcja -W ma odpowiadajca
       sobie dlug opcj w stylu GNU, jak opisano niej.  Argumenty  przekazywane
       dlugim  opcjom  w  stylu  GNU  s  lczone z opcj przy uyciu znaku =, bez
       dodatkowych spacji  lub  przekazywane  w  nastpnym  argumencie  wiersza
       polece (tj. bez znaku rownoci i po spacji).

       Gawk przyjmuje nastpujce, wymienione alfabetycznie, opcje.

       -F fs
       --field-separator=fs
              Uywa  fs  jako wejciowego separatora pola (warto predefiniowanej
              zmiennej FS).

       -v var=val
       --assign=var=val
              Przyznaje zmiennej var warto val.  Robi to  przed  uruchomieniem
              programu.   Takie  wartoci  zmiennych  s dostpne dla bloku BEGIN
              programu AWK.

       -f plik-programu
       --file=plik-programu
              Odczytaj rodlo  programu  AWK  z  pliku  plik-programu,  zamiast
              odczytywa  go  z  pierwszego  argumentu wiersza polece.  Mona uy
              wielu opcji -f (lub --file).

       -mf=NNN
       -mr=NNN
              Ustaw limity pamici na warto NNN.   Flaga  f  ustawia  maksymaln
              liczb pol, a flaga r ustawia maksymalny rozmiar rekordu. Te dwie
              flagi i  opcja  -m  pochodz  z  wersji  AT&T  Bell  Laboratories
              research  UNIX awk.  S one ignorowane w gawk, gdy nie posiada on
              predefiniowanych limitow.
       -W compat
       -W traditional
       --compat
       --traditional
              Pracuje w trybie zgodnoci.  W  trybie  tym,  gawk  zachowuje  si
              identycznie   z   UNIX   awk;  nie  jest  rozpoznawane  adne  ze
              specyficznych  dla  GNU  rozszerze.   Posta  --traditional  jest
              preferowana.  Zobacz ROZSZERZENIA GNU, dla dalszych informacji.

       -W copyleft
       -W copyright
       --copyleft
       --copyright
              Wypisuje  krotk  wersj  informacji  o kopiowaniu (na standardowe
              wyjcie).

       -W dump-variables[=plik]
       --dump-variables[=plik]
              Wypisuje do pliku  posortowan  list  zmiennych  globalnych,  ich
              typoow  i kocowych wartoci.  Jeli nie podano pliku, to gawk uywa
              pliku o nazwie awkvars.out w katalogu biecym.
              Lista  wszystkich  zmiennych  globalnych  to  dobry  sposob   na
              wyszukanie  bldow  typograficznych  w  programach.   Moe  si  te
              przyda, gdy masz wielki program z mnostwem funkcji a  chcesz  si
              upewni,  e  nie  uywaj  one przypadkiem ze zmiennych globalnych,
              ktore uwaasz za lokalne.   (Szczegolnie  latwo  pomyli  si  przy
              prostych nazwach zmiennych, jak i, j, i tak dalej.)

       -W help
       -W usage
       --help
       --usage
              Wypisuje  na  standardowe  wyjcie krotkie podsumowanie dostpnych
              opcji.  (Zgodnie  z  GNU  Coding  Standards,  te  opcje  powoduj
              natychmiastowe, pomylne zakoczenie pracy).

       -W lint[=fatal]
       --lint[=fatal]
              Daje   ostrzeenia   o   konstrukcjach,  ktore  s  pokraczne  lub
              nieprzenone  dla  innych  implementacji  AWK.    Z   opcjonalnym
              argumentem  fatal,  ostrzeenia  lint staj si bldami krytycznymi.
              Moe to drastyczne, ale korzystanie z tej opcji na  pewno  zachci
              do pisania czystszych programow AWK.
       -W lint-old
       --lint-old
              Daje  ostrzeenia  o konstrukcjach, ktore nieprzenone na pierwotn
              wersj Uniksowego awk.
       -W gen-po
       --gen-po
              Przeglda  i  analizuje  program  AWK  program,   i   tworzy   na
              standardowym  wyjciu  plik formatu GNU .po, zawierajcy wpisy dla
              wszystkich podlegajcych lokalizacji lacuchow  w  programie.  Sam
              program  nie  jest  wykonywany.   Wicej szczegolow o plikach .po
              mona znale w pakiecie dystrybucyjnym GNU gettext.

       -W non-decimal-data
       --non-decimal-data
              Rozpoznaje wartoci osemkowe i szesnastkowe w danych  wejciowych.
              Uywaj tej opcji ze szczeg'oln ostronoci!

       -W posix
       --posix
              Wlcza  tryb  zgodnoci,  w  ktorym  obowizuj  nastpujce dodatkowe
              ograniczenia:

              o sekwencje specjalne \x nie s rozpoznawane.

              o Przy FS ustawionym na  pojedyncz  spacj  jako  separatory  pol
                dzialaj  tylko  spacje  i  tabulatory, znaki nowej linii nie s
                separatorami pol.

              o Nie mona kontynuowa linii po ?  i :.

              o Synonim  `func'  dla  slowa  kluczowego  `function'  nie  jest
                rozpoznawany.

              o Operatory ** i **= nie mog by uywane zamiast ^ i ^=.

              o Nie jest dostpna funkcja fflush().

       -W profile[=plik_prof]
       --profile[=plik_prof]
              Wysyla  dane  profilowania  do  pliku_prof.   Domylnie  jest  to
              awkprof.out.  Uruchomiony z  gawk,  profil  jest  tylko  "ladnie
              wypisan"  wersj  programu.   Uruchomiony z pgawk, profil zawiera
              liczb wykona kadej instrukcji  programu  (na  lewym  marginesie)
              oraz liczb wywola funkcji dla kadej funkcji uytkownika.

       -W re-interval
       --re-interval
              Wlcz   uycie   wyrae   powtarzanych   (interval  expressions)  w
              dopasowywaniu     wyrae      regularnych      (patrz      poniej
              Wyraeniaregularne).   Wyraenia  powtarzane  nie byly tradycyjnie
              dostpne w jzyku AWK.  Standard  POSIX  dodal  je  dla  uzyskania
              wzajemnej    zgodnoci   awk   i   egrep.    Jednak   ich   uycie
              najprawdopodobniej da bldy w starych programach AWK, zatem  gawk
              udostpnia  je  tylko  wtedy,  gdy  zadano tego niniejsz opcj lub
              podano opcj --posix.
       -W source=tekst-programu
       --source=tekst-programu
              Uywa tekst-programu jako kodu rodlowego programu AWK.  Opcja  ta
              pozwala   na  latwe  lczenie  funkcji  bibliotecznych  (uywanych
              poprzez opcje -f i  --file)  z  kodem  rodlowym  wprowadzanym  w
              wierszu  polece.   Jest  to  przeznaczone  przede  wszystkim dla
              rednio duych programow AWK, uywanych w skryptach powlokowych.
              Forma -W source= tej opcji uywa reszty argumentu wiersza  polece
              jako  tekstu programu; dalsze opcje -W nie bd rozpoznawane w tym
              samym argumencie.

       -W version
       --version
              Wypisuje informacj  o  wersji  tej  konkretnej  kopii  gawk  (na
              standardowe  wyjcie).   Jest  to  przydatne  przede wszystkim do
              zdobywania informacji, czy bieca kopia gawk, ktor  posiadasz  na
              systemie  jest aktualna. Przydaje si take przy zglaszaniu bldow.
              (Wedlug GNU Coding Standards (Standardow Kodowania  GNU),  opcje
              te  powoduj  natychmiastowe,  zakoczone  powodzeniem  zakoczenie
              pracy.)

       --     Sygnalizuje koniec opcji. Dziki temu nastpne argumenty  programu
              AWK  mog rozpoczyna si mylnikiem "-". [Na przyklad rozpoczynajce
              si mylnikiem nazwy  plikow].  Istnieje  glownie  dla  utrzymania
              spojnoci  z  konwencj  przetwarzania argumentow uywan w wikszoci
              programow POSIX-owych.
       W trybie zgodnoci wszelkie inne opcje s  zaznaczane  jako  niepoprawne,
       lecz  poza  tym  s  ignorowane.  W  normalnym  trybie  dzialania,  jeli
       dostarczono tekst programu AWK, nieznane  opcje  s  mu  przekazywane  w
       tablicy  ARGV,  aby  mogl  je  sobie  sam  przetworzy. Przydaje si to w
       praktyce  do  uruchamiania   programow   AWK   przez   mechanizm   "#!"
       interpretera.

WYWO/LANIE PROGRAMU AWK

       Program  AWK  sklada  si  z  sekwencji  instrukcji  wzorzec-akcja  oraz
       opcjonalnych definicji funkcji.
              wzorzec   { instrukcje akcji }
              function nazwa(lista parametr'ow) { instrukcje }
       Gawk najpierw odczytuje  rodlo  programu  z  podanych  plik'ow-programu.
       Gawk  czyta  tekst programu tak, jakby wszystkie pliki-programu zostaly
       polczone ze sob w calo. Przydaje si do budowania bibliotek funkcji AWK,
       bez  koniecznoci  wlczania  ich  do kadego nowego programu AWK, ktory z
       nich korzysta. Umoliwia to  rownie  lczenie  funkcji  bibliotecznych  z
       programami z wiersza polece.
       Zmienna  rodowiskowa  AWKPATH  okrela  ciek  przeszukiwania,  uywan  do
       znajdowania plikow rodlowych podanych w opcji -f.  Jeli zmienna ta  nie
       istnieje,  domyln  ciek  staje  si ".:/usr/local/share/awk". (Faktyczny
       katalog moe by rony, zalenie od tego jak skompilowano  i  zainstalowano
       awk.)   Jeli  nazwa  pliku,  podana opcji -f zawiera znak "/", nie jest
       dokonywane adne przeszukiwanie cieki.
       Gawk wywoluje programy AWK w nastpujcej kolejnoci.   Najpierw  dokonuje
       wszelkich  inicjalizacji  zmiennych,  zadanych  w opcjach -v.  Nastpnie
       kompiluje program do postaci wewntrznej.  Potem wywoluje kod, zawarty w
       blokach  BEGIN  (jeli  istniej),  a  nastpnie  zaczyna odczytywa kady z
       plikow, podanych w tablicy ARGV.  Jeli nie podano takich  nazw  plikow,
       gawk odczytuje standardowe wejcie.
       Jeli nazwa pliku w wierszu polece ma posta var=val , to jest traktowana
       jako inicjalizacja zmiennej. Zmienna var uzyska warto val.  (Dzieje  si
       to  po  uruchomieniu  kadego  bloku BEGIN.)  Ten sposob inicjalizowania
       zmiennych najbardziej przydaje si  do  dynamicznego  nadawania  wartoci
       zmiennym,  ktorych  AWK  uywa  do  okrelania  sposobu,  w  jaki  wejcie
       rozbijane jest na pola i rekordy. Jest te uyteczny do  kontroli  stanu,
       jeli zachodzi potrzeba wielokrotnego czytania danego pliku danych.
       Jeli warto konkretnego elementu ARGV jest pusta (""), to gawk j pomija.
       Dla  kadego  rekordu  wejcia  gawk  dokonuje porownania, sprawdzajc czy
       odpowiada on jakiemu wzorcowi  z  programu  AWK.   Jeli  wzorzec  bdzie
       odpowiadal  rekordowi, zostanie wykonana zwizana z nim akcja.  Wzorce s
       sprawdzane w kolejnoci ich pojawienia si w programie.
       Na koniec, gdy wyczerpane  zostanie  cale  wejcie,  gawk  wywoluje  kod
       zawarty w bloku END.

ZMIENNE, REKORDY I POLA

       Zmienne  AWK  s dynamiczne; zaczynaj istnie gdy s po raz pierwszy uyte.
       Ich wartoci s zmiennoprzecinkowe, znakowe (cigi  znakow)  lub  jedne  i
       drugie  naraz,  zalenie  od  sposobu  uycia. AWK posiada rownie tablice
       jednowymiarowe;  symulowane  mog  by  rownie  tablice   wielowymiarowe.
       Podczas  dzialania  programu  ustawianych  jest  kilka predefiniowanych
       zmiennych; bd one opisane niej.
   Rekordy
       Zwykle rekordy rozdzielane s znakami nowej linii [czyli  rekordem  jest
       pojedyncza  linia].  Moesz  kontrolowa  sposob,  w  jaki  bd separowane
       rekordy przypisujc warto  wbudowanej  zmiennej  RS  Jeeli  zawiera  ona
       pojedynczy  znak,  to  jest  on  ogranicznikiem rekordow.  W przeciwnym
       przypadku, RS jest wyraeniem regularnym. Tekst wejciowy pasujcy do tego
       wyraenia  rozdziela  rekord. Jednake, w trybie zgodnoci do rozdzielania
       rekordow zostanie  uyty  tylko  jego  pierwszy  znak.   jeeli  RS  jest
       ustawiony  na lacuch pusty, to rekordy rozdzielane s pustymi liniami. W
       tym przypadku znak nowej linii zawsze  dziala  jako  ogranicznik  pola,
       oprocz wartoci ogranicznika ustawionej przez FS.
   Pola
       Po  przeczytaniu  kadego  rekordu  wejciowego, gawk rozbija go na pola,
       uywajc  do  tego  celu  wartoci  separatora  pol,  FS.   Jeli  FS  jest
       pojedynczym  znakiem,  to  pola  s  rozdzielane  tym wlanie znakiem.  W
       przeciwnym wypadku FS powinien by wyraeniem regularnym.  W  szczegolnym
       wypadku,  kiedy FS jest pojedyncz spacj, pola s oddzielane dowoln iloci
       bialych  spacji  (spacji,  tabulatorow,  nowych  linii).   (Ale   patrz
       omowienie  --posix).   UWAGA:  Warto  zmiennej  IGNORECASE (patrz niej)
       rownie wplywa na sposob rozdzielania pol  i  rekordow  (w  wypadku  gdy
       odpowiednio FS bd RS jest wyraeniem regularnym).
       Jeli  zmienn FIELDWIDTHS ustawiono na list oddzielonych spacjami liczb,
       to kade pole powinno mie stal szeroko, za gawk dokonuje  podzialu  przy
       uyciu  podanych  szerokoci. Warto FS jest wtedy ignorowana.  Przyznanie
       zmiennej FS nowej wartoci  uniewania  uycie  FIELDWIDTHS,  i  przywraca
       domylne zachowanie.
       Do  kadego pola w rekordzie wejciowym mona odwola si przez jego pozycj,
       $1, $2, itd.  $0 jest calym rekordem (zwykle lini).  Do pol nie  musisz
       si odwolywa przez stale:
              n = 5
              print $n
       wypisze pite pole rekordu wejciowego.
       Zmienna NF jest ustawiana na calkowit liczb pol w rekordzie wejciowym.
       Odniesienia  do  pol nieistniejcych (np. pol znajdujcych si za $NF) daj
       lacuch zerowy. Jednak nadanie nieistniejcemu polu wartoci (np.  $(NF+2)
       = 5) zwiksza warto licznika NF, a pola znajdujce si `pomidzy', inicjuje
       lacuchem zerowym. Przypisanie to poowoduje rownie ponowne przetworzenie
       wartoci zmiennej $0, w ktorej pola zostan rozdzielone wartoci OFS.
       Przypisanie wartoci istniejcemu polu powoduje ponowne utworzenie calego
       rekordu podczas odwolania si do $0.  Podobnie, przypisanie  wartoci  do
       $0 powoduje, e rekord jest ponownie dzielony, tworzc nowe wartoci pol.
   Wbudowane zmienne
       Wbudowanymi zmiennymi Gawk s:
       ARGC        Liczba   argumentow   wiersza   polece   (nie  liczy  opcji
                   przekazanych gawk, ani rodla programu).
       ARGIND      Indeks w tablicy ARGV bieco przetwarzanego pliku.
       ARGV        Tablica  argumentow  wiersza  polece.   Tablica   ta   jest
                   indeksowana  od  zera  do  ARGC  -  1.   Dynamiczna  zmiana
                   zawartoci ARGV moe  sterowa  plikami  uywanymi  jako  dane.
                   BINMODE  Na  systemach  nie-POSIX-owych, okrela uycie trybu
                   "binarnego" do wszystkich  operacji  wejcia/wyjcia  plikow.
                   Numeryczne   wartoci   1,  2  lub  3  oznaczaj,  e  binarne
                   wejcie/wyjcie powinno zosta uyte dla,  odpowiednio,  plikow
                   wejciowych,  wyjciowych,  lub  wszystkich  plikow.  Wartoci
                   lacuchowe:  "r"  lub   "w"   oznaczaj   uywanie   binarnego
                   wejcia/wyjcia  dla,  e  plikow, odpowiednio, wejciowych lub
                   wyjciowych.  Wartoci lacuchowe: "rw" lub "wr"  oznaczaj,  e
                   binarne   wejcie/wyjcie  powinno  by  uyte  dla  wszystkich
                   plikow.  Wszystkie inne wartoci lacuchowe s traktowane  jak
                   "rw", ale powoduj komunikat ostrzegawczy.
       CONVFMT     Format konwersji dla liczb, domylnie "%.6g".
       ENVIRON     Tablica   zawierajca   wartoci   biecego  rodowiska.
                   Tablica    ta     jest     indeksowana     zmiennymi
                   rodowiskowowymi,  kady  element tablicy jest wartoci
                   danej zmiennej (np. ENVIRON["HOME"]  moe  mie  warto
                   /u/arnold).   Zmiana  tej  tablicy  nie  wplynie  na
                   rodowisko  widziane  przez  programy,   ktore   gawk
                   wywoluje przez przekierowania lub przy uyciu funkcji
                   system().
       ERRNO       Jeli    pojawi    si    bld    systemowy     podczas
                   przekierowywania  dla  getline,  podczas odczytu dla
                   getline lub podczas close(), to ERRNO bdzie  zawiera
                   lacuch  opisujcy  bld.   Podlega on tlumaczeniu przy
                   ustawieniach locale innych ni angielskie.
       FIELDWIDTHS Jest rozdzielon bialymi spacjami list szerokoci pol.
                   Jeli  zmienna  ta  jest  ustawiona,  to gawk rozbija
                   wejcie na  pola  o  stalych  szerokociach  (domylnie
                   rozbija je wedlug wartoci separatora FS).
       FILENAME    Nazwa  pliku  biecego  pliku  wejciowego.   Jeli nie
                   podano plikow w wierszu polece, FILENAME przechowuje
                   warto    "-".     Warto   zmiennej   FILENAME   jest
                   niezdefiniowana  wewntrz  bloku   BEGIN   (chyba   e
                   zostanie nadana przez getline).
       FNR         Liczba rekordow wejciowych w biecym pliku wejciowym.
       FS          Separator pol wejciowych, domylnie spacja.
       IGNORECASE  Okrela  wraliwo  na  wielkoci znakow w operacjach na
                   wyraeniach regularnych. Jeli zmienna  IGNORECASE  ma
                   warto  niezerow, to porownywanie wzorcow w regulach,
                   rozdzielanie pol  przez  FS,  rozdzielanie  rekordow
                   przez  RS, dopasowywanie wyrae regularnych przez ~ i
                   !~, oraz wbudowane funkcje gsub(), index(), match(),
                   split()  i  sub(),  bd ignorowa wielko liter podczas
                   operacji   na   wyraeniach   regularnych.     UWAGA:
                   Ustawienie to nie wplywa na indeksowanie tablic, ani
                   na funkcj asort().
                   Tak wic jeli IGNORECASE nie jest  rowne  zero,  /aB/
                   odpowiada  wszystkim  nastpujcym  lacuchom  -- "ab",
                   "aB", "Ab", i "AB".   Jak  ze  wszystkimi  zmiennymi
                   AWK,  pocztkowa  warto  IGNORECASE  jest  zerem, wic
                   operacje na  wyraeniach  regularnych  s  wraliwe  na
                   wielko  znakow.  W  Unixie przy ignorowaniu wielkoci
                   znakow uywany jest pelny  zestaw  znakow  ISO-8859-1
                   Latin-1.
       LINT        Zapewnia  dynamiczne sterowanie opcj --lint z wntrza
                   programu AWK.  Gdy  jest  prawdziwe,  gawk  wypisuje
                   ostrzeenia  lint.  Gdy  falszywe  --   nie wypisuje.
                   Kiedy   ma   przypisan   warto   lacuchow   "fatal",
                   ostrzeenia lint staj si bldami krytycznymi, dokldnie
                   tak samo, jak przy --lint=fatal.   Kada  inna  warto
                   prawdziwa wypisuje tylko ostrzeenia.
       NF          Liczba pol w biecym rekordzie wejciowym.
       NR          Calkowita  liczba  odczytanych  do tej pory rekordow
                   wejciowych.
       OFMT        Format wyjciowy liczb, domylnie "%.6g".
       OFS         Separator pol wyjciowych, domylnie spacja.
       ORS         Separator rekordow wyjciowych, domylnie nowa  linia.
                   PROCINFO  Elementy  tej  tablicy  umoliwiaj dostp do
                   informacji o dzialajcym programie AWK. W  niektorych
                   systemach  w tablicy mog istnie elementy od "group1"
                   a do "groupn"  dla  pewnego  n,  bdcego  liczb  grup
                   dodatkowych,   do   ktorych   naley   program.    Do
                   sprawdzenia tych elementow  uyj  operatora  in.   Na
                   pewno s dostpne nastpujce elementy:
                   PROCINFO["egid"]   warto      funkcji     systemowej
                                      getegid(2).
                   PROCINFO["euid"]   warto     funkcji      systemowej
                                      geteuid(2).
                   PROCINFO["FS"]     "FS", jeli dziala podzial na pola
                                      za pomoc FS,  lub  "FIELDWIDTHS",
                                      jeli  dziala  podzial  na pola za
                                      pomoc FIELDWIDTHS.
                   PROCINFO["gid"]    warto     funkcji      systemowej
                                      getgid(2).
                   PROCINFO["pgrpid"] ID    grupy    procesow   biecego
                                      procesu.
                   PROCINFO["pid"]    ID biecego procesu.
                   PROCINFO["ppid"]   ID  procesu   macierzystego   dla
                                      biecego procesu.
                   PROCINFO["uid"]    warto      funkcji     systemowej
                                      getuid(2).
       RS          Separator rekordow wejciowych, domylnie  nowa
                   linia.  Jeli RS ma warto lacucha zerowego, to
                   rekordy s oddzielane pustymi liniami.  Gdy RS
                   jest  ustawiony  na  lacuch  zerowy,  to znak
                   nowej linii zawsze dziala jak separator pola,
                   oprocz    dzialania   jakiejkolwiek   wartoci
                   zmiennej FS.
       RT          Zakoczenie rekordu.  Gawk ustawia RT na tekst
                   wejciowy, ktory pasowal do znaku lub wyraenia
                   regularnego okrelonego przez RS.
       RSTART      Indeks pierwszego znaku, dopasowanego  funkcj
                   match(); 0 w przypadku braku dopasowania.
       RLENGTH     Dlugo lacucha dopasowanego funkcj match(); -1
                   w przypadku braku dopasowania.
       SUBSEP      Znak,  uywany  do   separacji   wielokrotnych
                   indeksow  w  elementach tablicowych, domylnie
                   jest to "\034".
       TEXTDOMAIN  Dziedzina tekstowa programu  AWK.   Stosowane
                   od    odszukania   zlokalizowanych   tlumacze
                   lacuchow znakowych programu.
   Tablice
       Tablice  s  indeksowane  wyraeniem,   ujtym   w   nawiasy
       kwadratowe ([ i ]).  Jeli wyraenie jest list wyrae (wyra,
       wyra ...)  to indeks  tablicy  jest  sklejany  z  wartoci
       (lacuchowych)   kadego   wyraenia,  oddzielonych  wartoci
       zmiennej SUBSEP.  [Uwaga: jest tak dlatego,  e  AWK  uywa
       tablic asocjacyjnych - tak jakby slownikowych - nie ma tu
       normalnych  liczbowych  indeksow  -   indeksem   moe   by
       cokolwiek,    najczciej    lacuch.   Symulowanie   tablic
       wielowymiarowych    polega    wlanie     na     sklejaniu
       poszczegolnych  indeksow  w  unikalny  lacuch  --  przyp.
       tlum.]    Wlaciwo   ta   jest   uywana    do    symulacji
       wielowymiarowych tablic. Na przyklad:
              i = "A" ; j = "B" ; k = "C"
              x[i, j, k] = "hello, world\n"
       przypisuje  lacuch "hello, world\n" elementowi tablicy x,
       o  indeksie  bdcym  lacuchem   "A\034B\034C".   Wszystkie
       tablice  w  AWK s asocjacyjne, tj. indeksowane wartociami
       lacuchowymi.
       Do sprawdzenia czy dana tablica posiada oczekiwany indeks
       [lacuchowy],  mona uy operatora in, ktory ma zastosowanie
       przede wszystkim w instrukcjach if lub while.
              if (val in array)
                   print array[val]
       Jeli  tablica  posiada  wielokrotne  indeksy,   mona   uy
       konstrukcji (i, j) in array.
       Konstrukcja   in  moe  by  rownie  uyta  w  ptli  for  do
       iterowania poprzez wszystkie  elementy  tablicy  [poniewa
       jest   ona   asocjacyjna,  nie  mona  jej  iterowa  przez
       przelecenie indeksu od zera do najwyszej wartoci - indeks
       moe by tu przecie dowolnym lacuchem - przyp.  tlum.]
       Element  mona  skasowa  z  tablicy  przy  uyciu polecenia
       delete.   Poleceniem  delete  mona  si   te   posluy   do
       skasowania  calej  zawartoci  tablicy,  przez podanie jej
       nazwy bez indeksu.
   Typy zmiennych i konwersje
       Zmienne oraz pola mog by liczbami (zmiennoprzecinkowymi),
       lacuchami   lub  jednym  i  drugim  naraz.  Interpretacja
       wartoci zmiennej zaley od kontekstu.  Jeli  jest  uyta  w
       wyraeniu  numerycznym,  jest  interpretowana jako liczba;
       jeli jest uyta w wyraeniu lacuchowym, to jest  traktowana
       jak lacuch.
       Aby  wymusi  traktowanie  zmiennej  jako liczby, dodaj do
       niej 0; aby wymusi traktowanie jej jako  lacucha,  doklej
       do niej lacuch zerowy.
       Podczas   konwersji   lacucha   na  liczb,  obrobka  jest
       dokonywana przy uyciu  funkcji  strtod(3).   Liczba  jest
       przeksztalcana  na lacuch przy uyciu wartoci CONVFMT jako
       parametru  formatujcego  dla  sprintf(3),  oraz   wartoci
       numerycznej   jako   argumentu.   Jednak,  nawet  mimo  e
       wszystkie liczby  w  AWK  s  zmiennoprzecinkowe,  wartoci
       calkowite  s zawsze konwertowane jak calkowite (integer).
       Tak wic, przy
              CONVFMT = "%2.2f"
              a = 12
              b = a ""
       zmienna b uzyskuje warto lacuchow "12", a nie "12.00".
       Gawk dokonuje  porowna  w  nastpujcy  sposob:  Jeli  dwie
       wartoci  s numeryczne, to s porownywane numerycznie. Jeli
       jedna z wartoci jest numeryczna, a druga lacuchowa, ktora
       jest  "lacuchem  numerycznym",  to  porownania  s  rownie
       dokonywane  numerycznie.   W  przeciwnym  wypadku   warto
       numeryczna jest konwertowana do lacucha i dokonywane jest
       porownanie  lacuchowe.    Dwa   lacuchy   s,   oczywicie,
       porownywane  jako  lacuchy.   Zwro uwag, e standard POSIX
       stosuje pojcie "lacucha numerycznego" wszdzie,  nawet  do
       stalych    lacuchowych.    Jednak   jest   to   oczywicie
       nieprawidlowe  i  gawk  tego  nie  robi.   (Na   szczcie,
       poprawiono to w nastpnej wersji standardu.)
       Zauwa,  e  stale  znakowe, takie jak "57" nie s lacuchami
       numerycznymi  -  s  one   stalymi   lacuchowymi.   Pojcie
       "lacuchow numerycznych" odnosi si wylcznie do pol, wejcia
       getinput, FILENAME, elementow ARGV, ENVIRON  i  elementow
       tablicy   utworzonej   funkcj  split()  bdcych  lacuchami
       numerycznymi.  Podstawow koncepcj jest to, e wygldajce na
       numeryczne  dane  z  wejcia  uytkownika,  i  tylko one, s
       traktowane w opisany sposob.
       Niezainicjalizowane zmienne maj warto  numeryczn  zero  i
       lacuchow "" (zero lub pusty lacuch).
   Sta/le 'osemkowe i szesnastkowe
       Poczynajc   od  wersji  3.1  gawk  ,  w  kodzie  rodlowym
       programow AWK  mona  korzysta  ze  stalych  osemkowych  i
       szesnastkowych  w  stylu  jzyka C.  Na przyklad, osemkowa
       warto 011 jest rowna dziesitnej 9,  a  szesnastkowa  0x11
       jest rowna dziesitnej 17.
   Sta/le /lacuchowe
       Stale  lacuchowe  w  AWK  s  sekwencjami  znakow ujtymi w
       cudzyslowy (").  Wewntrz lacuchow  rozpoznawane  s  pewne
       sekwencje specjalne, jak w C.  S to:
       \\   doslowny odwrotny ukonik (backslash)
       \a   znak dzwonka, "alert"; zazwyczaj znak ASCII BEL
       \b   backspace
       \f   wysuw strony (form-feed)
       \n   znak nowej linii (newline).
       \r   powrot karetki (carriage return).
       \t   tabulacja pozioma (horizontal tab).
       \v   tabulacja pionowa (vertical tab).
       \xcyfry hex
            Znak reprezentowany przez lacuch cyfr szesnastkowych
            wystpujcych po \x.  Tak  jak  w  ANSI  C,  wszystkie
            kolejne  cyfry szesnastkowe uwaane s za cz sekwencji
            specjalnej.   (Ta  cecha  powinna  nam  co  mowi   o
            projektowaniu  jzykow  przez komitety.)  Np., "\x1B"
            jest znakiem ASCII ESC (escape).
       \ddd Znak  reprezentowany  przez  1-,  2-  lub   3-cyfrow
            sekwencj  cyfr osemkowych.  Np., "\033" jest znakiem
            ASCII ESC (escape).
       \c   Doslowny znak c.
       Sekwencji specjalnych mona te uywa wewntrz stalych  wyrae
       regularnych   (np.,   /[ \t\f\n\r\v]/   dopasowuje  biale
       znaki).
       W trybie zgodnoci, znaki  reprezentowane  przez  osemkowe
       lub   szesnastkowe   sekwencje   specjalne  s  traktowane
       doslownie,   jeli   uyto   ich   w   stalych   wyraeniach
       regularnych.  Zatem, /a\52b/ jest rownowanikiem /a\*b/.

WZORCE I AKCJE

       AWK   jest   jzykiem   zorientowanym   liniowo.  Najpierw
       przychodzi wzorzec, a potem  akcja.  Instrukcje  akcji  s
       zawarte  w  nawiasach { i }.  Pomin mona zarowno wzorzec,
       jak i akcj, lecz oczywicie nie obydwa te pola naraz. Jeli
       pominito  wzorzec,  to akcja jest wykonywana dla kadego z
       rekordow wejcia. Brakujca akcja jest  z  kolei  rownowana
       akcji
              { print }
       ktora wypisuje caly rekord.
       Komentarze  rozpoczynaj  si znakiem "#" i trwaj a do koca
       linii.   Do  oddzielania  instrukcji  mona  uywa  pustych
       linii. Zwykle instrukcja koczy si wraz z now lini, jednak
       nie jest to regul w przypadku linii koczcych si  na  ",",
       "{", "?", ":", "&&" lub "||".  Dla liniach koczcych si na
       do  lub  else  rownie  wystpi  automatyczna   kontynuacja
       instrukcji  w  nastpnej linii.  W innych wypadkach, linia
       moe by kontynuowana przez zakoczenie jej znakiem  "\";  w
       takim wypadku znak nowej linii jest ignorowany.
       Wiele   instrukcji  mona  te  zgrupowa  w  jednej  linii,
       oddzielajc je znakiem ";". Tyczy si to zarowno instrukcji
       w czci akcji z pary wzorzec-akcja (zwykly przypadek), jak
       i do samych instrukcji wzorzec-akcja.
   Wzorce
       Wzorce w AWK mog by jedn z nastpujcych rzeczy:
              BEGIN
              END
              /wyraenie regularne/
              wyraenie relacyjne
              wzorzec && wzorzec
              wzorzec || wzorzec
              wzorzec ? wzorzec : wzorzec
              (wzorzec)
              ! wzorzec
              wzorzec1, wzorzec2
       BEGIN i END s dwoma specjalnymi rodzajami wzorcow,  ktore
       nie   s  porownywane  z  danymi  wejciowymi.  Czci  akcji
       wszelkich wzorcow BEGIN s lczone, tak jakby wszystkie one
       zostaly  napisane  w  pojedynczym  bloku  BEGIN.   S  one
       wykonywane   przed   rozpoczciem   odczytywania    danych
       wejciowych.  Podobnie, wszelkie bloki END s rownie lczone
       i wykonywane po wyczerpaniu danych wejciowych.   (lub  po
       dojciu  do  instrukcji exit.)  Wzorce BEGIN i END nie mog
       by lczone z  innymi  wzorcami  w  wyraeniach  wzorcowych.
       Wzorcom  BEGIN  i  END  nie  moe brakowa czci definiujcej
       akcj.
       Dla  wzorcow  /wyrae  regularnych/  powizana   instrukcja
       wykonywana  jest  dla  kadego  rekordu  wejciowego, ktory
       odpowiada   zadanemu   wyraeniu   regularnemu.   Wyraenia
       regularne  s  tymi samymi wyraeniami, ktore mona spotka w
       egrep(1), i s podsumowane niej.
       wyraenie  relacyjne  moe  uywa  dowolnego  operatora   ze
       zdefiniowanych  w  sekcji o akcjach operatorow.  Ogolnie,
       testuj  one,  czy  okrelone  pola  odpowiadaj   okrelonym
       wyraeniom regularnym.
       Operatory  &&,  ||,  i  !   s  logicznymi  AND, OR i NOT,
       podobnie  jak  w  jzyku  C.  S  one  obliczane  w  sposob
       skrocony,  podobnie  jak  w  C,  i slu glownie do lczenia
       bardziej podstawowych wyrae wzorcowych.  Podobnie  jak  w
       wikszoci  jzykow,  dla  wymuszenia kolejnoci porownywania
       mona uy nawiasow.
       Operator ?: dziala podobnie jak ten  sam  operator  w  C.
       Jeli  pierwszy  wzorzec  jest prawdziwy, to do testowania
       uywany jest nastpny wzorzec; w przeciwnym wypadku  uywany
       jest trzeci wzorzec. Obliczany jest tylko albo drugi albo
       trzeci wzorzec.
       Forma wzorzec1, wzorzec2 wyraenia jest  nazywana  wzorcem
       zakresu.    Dopasowuje   ona  wszystkie  rekordy  wejcie,
       poczynajc od rekordu, ktory  odpowiada  wzorcowi1,  a  do
       rekordu  pasujcego do wzorzec2, wlcznie. Nie lczy si to z
       innymi rodzajami wyrae wzorcowych.
   Wyraenia regularne
       Wyraenia regularne s rozszerzon form tego, co mona  znale
       w egrep.  Skladaj si one z nastpujcych znakow:
       c          dopasowuje nie-specjalny znak c.
       \c         dopasowuje doslowny znak c.
       .          dopasowuje  dowolny  znak  w/lcznie  ze znakiem
                  nowej linii.
       ^          dopasowuje pocztek lacucha.
       $          dopasowuje koniec lacucha.
       [abc...]   lista znakow,  dopasowuje  dowolny  ze  znakow
                  abc....
       [^abc...]  zanegowana  lista znakow, dopasowuje wszystkie
                  znaki poza abc....
       r1|r2      alternatywa: dopasowuje albo r1 albo r2.
       r1r2       konkatenacja: dopasowuje r1, a nastpnie r2.
       r+         dopasowuje jeden lub wicej r-ow.
       r*         dopasowuje zero lub wicej r-ow.
       r?         dopasowuje zero lub jeden r.
       (r)        grupowanie: dopasowuje r.
       r{n}
       r{n,}
       r{n,m}     Jedna lub dwie liczby w  nawiasach  klamrowych
                  opisuj wyraenie powtarzane.  Jeeli w nawiasach
                  jest jedna liczba,  to  poprzedzajce  wyraenie
                  regularne r powtarzane jest n razy. Jeeli uyto
                  dwu  rozdzielonych  przecinkiem  liczb,  to  r
                  powtarzane  jest  od  n  do  m  razy.  Jeeli w
                  nawiasach jest jedna liczba, z  nastpujcym  po
                  niej  przecinkiem  to  r  powtarzane  jest  co
                  najmniej n razy.
                  Wyraenia powtarzane dostpne s tylko wtedy, gdy
                  w  wierszu polece uyto albo opcji --posix albo
                  --re-interval.

       \y         dopasowuje pusty lacuch na pocztku bd na  kocu
                  slowa.

       \B         dopasowuje pusty lacuch wewntrz slowa.

       \<         dopasowuje pusty lacuch na pocztku slowa.

       \>         dopasowuje pusty lacuch na kocu slowa.

       \w         dopasowuje  dowolny znak wchodzcy w sklad slow
                  (liter, cyfr lub podkrelenie).  [Nie  obejmuje
                  to,  niestety  polskich znakow diakrytycznych.
                  Sekwencje    dotyczce    dopasowywania    slow
                  oczywicie  rownie nie uwzgldniaj specyficznych
                  polskich znakow].

       \W         dopasowuje dowolny znak nie wchodzcy  w  sklad
                  slow.

       \`         dopasowuje  pusty  lacuch  na  pocztku  bufora
                  (lacucha).

       \'         dopasowuje pusty lacuch na kocu bufora.

       Sekwencje   specjalne   (escape   sequences),   ktore   s
       prawidlowe  w  stalych  lacuchowych (patrz niej) s rownie
       poprawne w wyraeniach regularnych.

       Klasy znak'ow s  now  wlasnoci  wprowadzon  w  standardzie
       POSIX.  Klasa  znakow  jest specjaln notacj sluc do opisu
       listy znakow posiadajcych szczegoln cech. Dla danej klasy
       rzeczywicie wystpujce w niej znaki mog by rone w zalenoci
       od kraju i/lub  uywanego  zestawu  znakow.  Na  przyklad,
       pojcie  o  tym,  co jest znakiem alfabetu jest odmienne w
       USA ni we Francji.

       Klasa  znakow  dozwolona   jest   wylcznie   w   wyraeniu
       regularnym  wewntrz  nawiasow  klamrowych  listy  znakow.
       Klasy znakow skladaj si z [:, slowa kluczowego opisujcego
       klas,  i  koczcego  :].   POSIX definiuje nastpujce klasy
       znakow:

       [:alnum:]  Znaki alfanumeryczne.

       [:alpha:]  Znaki alfabetu.

       [:blank:]  Znaki spacji lub tabulatorow.

       [:cntrl:]  Znaki sterujce.

       [:digit:]  Znaki numeryczne (cyfry).

       [:graph:]  Znaki,  ktore   s   zarowno   widoczne   (przy
                  wywietlaniu)  jak  i drukowalne.  (Spacja jest
                  drukowalna, ale nie jest widoczna, podczas gdy
                  a jest i takie, i takie.)

       [:lower:]  Znaki malych liter alfabetu.

       [:print:]  Znaki  drukowalne  (znaki, ktore nie s znakami
                  sterujcymi.)

       [:punct:]  Znaki  interpunkcyjne  (nie   bdce   literami,
                  cyframi,   znakami   sterujcymi   ani  znakami
                  spacji).

       [:space:]  Znaki  spacji  (takie   jak   zwykla   spacja,
                  tabulator,  wysuw  strony,  by  wymieni  tylko
                  kilka).

       [:upper:]  Znaki duych liter alfabetu.

       [:xdigit:] Znaki bdce cyframi szesnastkowymi.

       Na przyklad, przed standardem POSIX,  by  dopasowa  znaki
       alfanumeryczne  musialby napisa /[A-Za-z0-9]/.  Jeli twoj
       zestaw znakow zawiera inne  znaki  alfabetyczne,  powysze
       ich  nie  dopasuje, a jeli kolejno znakow w zestawie jest
       inna ni w ASCII, to wyraenie to moe nawet nie  dopasowywa
       znakow alfanumerycznych ASCII.  Za pomoc POSIX-owych klas
       znakow,  moesz  napisa  /[[:alnum:]]/,  i  dopasowuje  to
       wszystkie  alfabetyczne  i  numeryczne  znaki  z  twojego
       zestawu znakow.

       W  listach  znakow  mog  pojawi  si  dodatkowe  sekwencje
       specjalne.  Dotyczy  to  zestawow znakow ronych od ASCII,
       ktore mog posiada pojedyncze  symbole  (zwane  elementami
       por'ownywania  -  collating elements) reprezentowane przez
       wicej ni jeden znak, jak i  kilka  znakow  rownowanych  w
       operacjach   por'ownywania,   czy   sortowania.   (np.  we
       francuskim,  zwykle  "e"  i  akcentowane  (grave)  e`   s
       rownowane.)

       Symbole porownywania (Collating Symbols)
              Symbolem  porownywania  jest  wieloznakowy element
              porownywania  zawarty  pomidzy  [.   a   .].    Na
              przyklad,  jeli ch jest elementem porownywania, to
              [[.ch.]]  jest wyraeniem  regularnym  dopasowujcym
              ten  element  porownywania,  podczas gdy [ch] jest
              wyraeniem regularnym dopasowujcym c albo h.

       Klasy rownowanoci (Equivalence Classes)
              Klasa  rownowanoci  jest  specyficzn  dla  ustawie
              lokalnych  nazw dla listy rownowanych sobie znakow
              .  Nazwa  zawarta  jest  pomidzy  [=  a  =].    Na
              przyklad,  do  reprezentacji  wszystkich "e," "`,"
              and  "`."   mone  zosta  uyta  nazwa  e.   W   tym
              przypadku,   [[=e=]]   jest  wyraeniem  regularnym
              dopasowujcym dowolne z e, e', e' lub e`.  e`.

       Cechy te s bardzo  wartociowe  w  ustawieniach  lokalnych
       innych  ni  dla jzyka angielskiego. Funkcje biblioteczne,
       ktorych gawk  uywa  do  dopasowywania  wyrae  regularnych
       rozpoznaj  obecnie  wylcznie POSIX-owych klas znakow; nie
       rozpoznaj one symboli porownywania ani klas rownowanoci.

       Operatory  \y,  \B,  \<,  \>,  \w,  \W,  \`  oraz  \'   s
       specyficzne  dla  gawk;  s one rozszerzeniami opartymi na
       moliwociach bibliotek wyrae regularnych GNU.

       Rone opcje wiersza polece kontroluj sposob, w  jaki  gawk
       interpretuje znaki w wyraeniach regularnych.

       Brak opcji
              W  przypadku  domylnym  gawk  udostpnia  wszystkie
              moliwoci  wyrae  regularnych  POSIX  oraz   powyej
              opisane  operatory  wyrae  regularnych  GNU. Nie s
              jednak obslugiwane wyraenia powtarzane.

       --posix
              Obslugiwane s tylko POSIX-owe wyraenia  regularne,
              operatory GNU nie maj swego specjalnego znaczenia.
              (tj.,  \w  dopasowuje  literal  w).   Dozwolone  s
              wyraenia powtarzane.

       --traditional
              Dopasowywane  s  wyraenia  regularne  tradycyjnego
              uniksowego  awk.   Operatory  GNU  nie  maj  swego
              specjalnego  znaczenia, nie s dostpne ani wyraenia
              powtarzane ani POSIX-owe klasy znakow ([[:alnum:]]
              i  tak dalej).  Znaki opisywane przez osemkowe lub
              szesnastkowe  sekwencje  specjalne  s   traktowane
              doslownie,  nawet  jeli  reprezentuj one metaznaki
              wyrae regularnych.

       --re-interval
              Pozwala na wyraenia powtarzane, nawet  przy  uyciu
              --traditional.

   Akcje
       Instrukcje akcji s zawarte w nawiasach { i }.  Instrukcje
       akcji skladaj si ze zwyczajnych  instrukcji  przypisania,
       warunkow  i  instrukcji ptli, ktore mona znale w wikszoci
       innych  jzykow   programowania.   Operatory,   instrukcje
       sterujcymi,  a take instrukcje wejcia/wyjcia s opracowane
       na podstawie tych, spotykanych w jzyku C.

   Operatory
       Operatory w AWK, w kolejnoci malejcego priorytetu, to

       (...)       Grupowanie

       $           Odniesienie si do pola.

       ++ --       Inkrementuj    i     dekrementuj.     Zarowno
                   przedrostkowe i przyrostkowe.

       ^           Potgowanie  (mona  uy rownie **, oraz **= dla
                   operatora przypisania).

       + - !       Jednoargumentowy  plus,  minus   i   logiczna
                   negacja.

       * / %       Mnoenie,    dzielenie    i   modulo   (reszta
                   dzielenia).

       + -         Dodawanie i odejmowanie.

       odstp       Konkatenacja (zlczenie) lacuchow.

       < >
       <= >=
       != ==       Regularne operatory relacyjne.

       ~ !~        Dopasowanie wyraenia regularnego, dopasowanie
                   zanegowane.    UWAGA:   Nie   uywaj   stalego
                   wyraenia regularnego (/foo/) po lewej stronie
                   ~  lub !~.  Uywaj go tylko po prawej stronie.
                   Wyraenie /foo/ ~ exp ma takie samo  znaczenie
                   jak  (($0  ~  /foo/)  ~  exp).   Nie  jest to
                   zazwyczaj rzecz, ktorej oczekujesz.

       in          Przynaleno do tablicy.

       &&          Koniunkcja logiczna AND.

       ||          Alternatywa logiczna OR.

       ?:          Wyraenie warunkowe z C. Ma ono posta wyra1  ?
                   wyra2  : wyra3. Jeli wyra1 jest prawdziwe, to
                   wartoci wyraenia  jest  wyra2,  w  przeciwnym
                   wypadku   jest   ni  wyra3.   Obliczane  jest
                   wylcznie jedno z wyra2 i wyra3.

       = += -=
       *= /= %= ^= Przypisanie.   Obslugiwane    jest    zarowno
                   przypisanie absolutne (zmienna = warto) jak i
                   przypisanie operatorowe (inne formy).

   Instrukcje sterujce
       Instrukcje sterujce s nastpujce:

              if (warunek) instrukcja [ else instrukcja ]
              while (warunek) instrukcja
              do instrukcja while (warunek)
              for (wyra1; wyra2; wyra3) instrukcja
              for (var in tablica) instrukcja
              break
              continue
              delete tablica[indeks]
              delete tablica
              exit [ wyraenie ]
              { instrukcje }

   Instrukcje I/O
       Instrukcje I/O s nastpujce:

       close(plik [, jak])   Zamyka  plik,  potok   lub   proces
                             wspolbieny            (co-process).
                             Opcjonalnego jak  powinno  si  uywa
                             wylcznie  do zamykania jednego koca
                             dwukierunkowego potoku  do  procesu
                             wspolbienego.   Musi  to  by  warto
                             lacuchowa, albo "to" albo "from".

       getline               Ustawia  $0  z  nastpnego   rekordu
                             wejciowego; ustawia NF, NR, FNR.

       getline <plik         Ustawia   $0  z  nastpnego  rekordu
                             pliku; ustawia NF.

       getline var           Ustawia  var  z  nastpnego  rekordu
                             wejciowego; ustawia NF, FNR.

       getline var <plik     Ustawia  var  z  nastpnego  rekordu
                             pliku.

       polecenie | getline [var]
                             Uruchamia   przesylanie    potokiem
                             wyjcia  polecenia  albo do $0, albo
                             do var, jak wyej.

       polecenie |& getline [var]
                             Uruchamia  polecenia  jako   proces
                             wspolbieny,  wysylajc potokiem jego
                             wyjcie albo do $0 albo do var,  jak
                             wyej.     Procesy    wspolbiene   s
                             rozszerzeniem gawk.

       next                  Koczy przetwarzanie biecego rekordu
                             wejciowego.   Nastpnie  odczytywany
                             jest  kolejny  rekord  wejciowy   i
                             przetwarzanie   rozpoczyna   si  od
                             pierwszego  wzorca  programu   AWK.
                             Jeli    osignito    koniec   danych
                             wejciowych,  wykonywany  jest  blok
                             END.

       nextfile              Koczy  przetwarzanie  biecego pliku
                             wejciowego. Nastpny rekord wejciowy
                             zostanie   odczytany   z  kolejnego
                             pliku wejciowego.  Aktualizowane  s
                             wartoci  FILENAME  i ARGIND, za FNR
                             jest ustawiane na 1 i przetwarzanie
                             rozpoczyna  si od pierwszego wzorca
                             programu   AWK.    Jeli    osignity
                             zostanie  koniec danych wejciowych,
                             wykonywany jest blok END.

       print                 Wypisuje   biecy   rekord.   Rekord
                             wyjciowy   zakoczony  jest  wartoci
                             zmiennej ORS.

       print lista-wyrae     Wypisuje  wyraenia.  Kade  wyraenie
                             jest  oddzielone  wartoci  zmiennej
                             OFS.  Wyjciowy rekord jest  koczony
                             wartoci zmiennej ORS.

       print lista-wyrae >plik
                             Wypisuje  wyraenia  do pliku.  Kade
                             wyraenie jest  rozdzielone  wartoci
                             zmiennej OFS.  Rekord wyjciowy jest
                             zakoczony wartoci zmiennej ORS.

       printf fmt, lista-wyrae
                             Formatuje i wypisuje.

       printf fmt, lista-wyrae >plik
                             Formatuje i wypisuje do pliku.

       system(cmd-line)      Wywoluje polecenie  systemowe  cmd-
                             line,  i zwraca jego status wyjcia.
                             (funkcja  moe  nie  by  dostpna  na
                             systemach nie POSIX-owych.)

       fflush([plik])        Opronia  bufory  zwizane z otwartym
                             plikiem  wynikowym   lub   potokiem
                             plik.    Jeli   pominito  plik,  to
                             oproniane jest standardowe  wyjcie.
                             Jeeli plik jest lacuchem pustym, to
                             oproniane   s   bufory   wszystkich
                             otwartych plikow i potokow.

       Dozwolone  s  te dodatkowe przekierowania wejcia i wyjcia
       dla print i printf.

       print ... >> plik
              dokleja wyjcie do pliku.  a przekierowanie

       print ... | polecenie
              zapisuje do potoku.

       print ... |& polecenie
              wysyla dane do procesu wspolbienego.

       Polecenie getline zwraca zero na kocu pliku,  a  -1  przy
       bldzie.   W przypadku bldu, ERRNO zawiera lacuch opisujcy
       problem.

       UWAGA: uywajc potoku lub procesu wspolbienego do  getline
       albo  z  print czy printf wewntrz ptli, musisz uy close()
       do utworzenia nowych instancji tego polecenia.   AWK  nie
       zamyka  automatycznie  potokow  ani procesow wspolbienych
       gdy zwroc one EOF.

   Instrukcja printf
       Wersje  AWK  instrukcji  printf  oraz  funkcji  sprintf()
       (patrz niej) przyjmuj nastpujce formaty konwersji:

       %c      Znak   ASCII.    Jeli  argument  uyty  z  %c  byl
               numeryczny, to zostanie potraktowany jak znak  do
               wypisania.   W przeciwnym wypadku, argument bdzie
               zrozumiany jako lacuch i zostanie wypisany  tylko
               pierwszy znak tego lacucha.

       %d, %i  liczba dziesitna (cz calkowita).

       %e ,  %E
               Liczba      zmiennoprzecinkowa      w     postaci
               [-]d.ddddddE[+-]dd.  Format %E uywa po  prostu  E
               zamiast e.

       %f      Liczba      zmiennoprzecinkowa      w     postaci
               [-]ddd.dddddd.

       %g ,  %G
               Uywa konwersji e lub f w zalenoci od tego,  ktora
               jest  krotsza i pomijajc nieznaczce zera.  Format
               %G uywa E zamiast e.

       %o      Liczba osemkowa bez znaku (take calkowita).

       %u      Liczba dziesitna bez znaku (znow, calkowita).

       %s      Cig znakow (lacuch).

       %x ,  %X
               Liczba szesnastkowa bez znaku (calkowita). Format
               %X uywa liter ABCDEF zamiast abcdef.

       %%      Pojedynczy   znak   %;  aden  argument  nie  jest
               konwertowany.

       Midzy % a liter sterujc mog znale si opcjonalne parametry
       dodatkowe:

       n$     Oznacza  uycie  n-tego  argumentu  w  tym  miejscu
              formatowania.  Nosi nazw specyfikatora pozycyjnego
              i   jest   przeznaczone   glownie   do   uytku   w
              przetlumaczonych wersjach lacuchow formatu, nie  w
              oryginalnym   tekcie   programu   AWK.    Jest  to
              rozszerzenie gawk.

       -      Wyraenie w swoim  polu  powinno  by  wyrownane  do
              lewej.

       spacja W   przypadku   konwersji   numerycznych,  poprzed
              wartoci dodatnie odstpem, za ujemne znakiem minus.

       +      Znak  plus,  uyty  przed  modyfikatorem  szerokoci
              (patrz   niej),  nakazuje  zawsze  umieszcza  znak
              liczby przy konwersjach numerycznych, nawet  jeeli
              formatowane   dane   s   dodatnie.  Modyfikator  +
              powoduje uniewanienie modyfikatora spacji.

       #      Uywa   "alternatywnej   postaci"   pewnych   liter
              sterujcych.   Dla  %o, dodaje pocztkowe zero.  Dla
              %x  oraz  %X  dodaje  pocztkowe  0x  lub  0X  przy
              niezerowych  wynikach.   Dla  %e, %E oraz %f wynik
              zawsze zawiera kropk dziesitn.   Dla  %g  i  %G  z
              wyniku nie s usuwane kocowe zera.

       0      Pocztkowe 0 (zero) dziala jako flaga, wskazujca, e
              wynik  powinien  by  uzupelniony  zerami   zamiast
              spacji.  Odnosi  si  to  nawet  do  formatow  nie-
              numerycznych.  Flaga ta dziala  tylko  wtedy,  gdy
              pole jest szersze ni warto do wypisania.

       width (szeroko)
              Pole  powinno  by  wypelnione  do  tej  szerokoci.
              Zwykle pole uzupelniane jest spacjami.  Jeli  uyto
              flagi  0,  to  wypelnienie  zostanie dokonane przy
              uyciu zer.

       .prec (dokladno)
              Liczba okrelajca dokladno, jaka ma zosta uyta przy
              wypisywaniu.   Dla  formatow  %e, %E i %f, jest to
              liczba  cyfr,  jakie  zostan  wypisane  po  kropce
              dziesitnej.  Dla formatow %g i %G okrela maksymaln
              liczb cyfr znaczcych. Dla formatow %d, %o, %i, %u,
              %x   oraz   %X   okrela  minimaln  liczb  cyfr  do
              wypisania. Dla %s jest to maksymalna liczba znakow
              lacucha, jakie maj zosta wypisane.

       Dynamiczne  wlaciwoci  width i prec z printf() uywanego w
       jzyku C s rownie wspierane. Znak  gwiazdki  *  w  miejscu
       specyfikacji  zarowno  width  jak  i prec powoduje, e ich
       wartoci s pobierane  z  listy  argumentow,  przekazywanej
       printf  lub sprintf().  Chcc uy specyfikatora pozycyjnego
       z dynamiczn szerokoci lub dokladnoci naley poda n$ po * w
       lacuchu formatu.  Na przyklad, "%3$*2$.*1$s".

   Specjalne nazwy plik'ow
       Podczas przekierowa I/O przy uyciu print czy te printf do
       pliku, albo przy uyciu getline z pliku,  gawk  rozpoznaje
       wewntrznie  pewne specjalne nazwy plikow. Te nazwy plikow
       umoliwiaj  dostp  do   otwartych   deskryptorow   plikow,
       dziedziczonych    po    procesie   rodzicielskim   gawk'a
       (zazwyczaj  powloce).   Inne  pliki  specjalne  zapewniaj
       dostp do informacji o uruchomionym procesie gawk.  Z tych
       specjalnych nazw plikow mona rownie  korzysta  w  wierszu
       polece do okrelania plikow danych.  Te nazwy to:

       /dev/stdin  Standardowe wejcie.

       /dev/stdout Standardowe wyjcie.

       /dev/stderr Standardowe wyjcie diagnostyczne.

       /dev/fd/n   Plik zwizany z otwartym deskryptorem pliku n.

       S  one  szczegolnie przydatne do komunikatow o bldach. Na
       przyklad:

              print "Spieprzy/le to!" > "/dev/stderr"

       podczas gdy w przeciwnym wypadku musialby uy

              print "Spieprzy/le to!" | "cat 1>&2"

       Poniszych specjalnych nazw plikow mona uywa z  operatorem
       procesu  wspolbienego  |& do tworzenia witrualnych polcze
       sieciowych TCP/IP.

       /inet/tcp/lport/rhost/rport  Plik dla polczenia TCP/IP na
                                    lokalnym   porcie  lport  do
                                    zdalnej  maszyny  rhost   na
                                    zdalnym  porcie  rport.  Uyj
                                    portu 0, jeli chcesz, by  to
                                    system znalazl port.

       /inet/udp/lport/rhost/rport  Podobne,  lecz  uywa  UDP/IP
                                    zamiast TCP/IP.

       /inet/raw/lport/rhost/rport  Zarezerwowane do  przyszlego
                                    uytku.

       Inne  specjalne  nazwy  plikow  zapewniajce  informacje o
       dzialajcym procesie gawk.   Te  nazwy  plik'ow  s  obecnie
       przestarza/le.   Do  uzyskania  informacji,  jakie  podaj,
       naley skorzysta z tablicy PROCINFO .  Nazwy  tych  plikow
       to:

       Odczytanie  tego pliku zwraca PID biecego procesu. Liczba
       jest w postaci
                   dziesitnej i zakoczona jest now lini.

       /dev/ppid   Odczytanie  tego  pliku  zwroci  PID  procesu
                   rodzicielskiego.  Podobnie  jak  wyej, liczba
                   jest dziesitna i zakoczona now lini.

       /dev/pgrpid Odczytanie tego  pliku  zwroci  identyfikator
                   grupy  procesow  biecego  procesu, zapisany w
                   postaci dziesitnej i zakoczony now lini.

       /dev/user   Odczytanie  tego  pliku   zwroci   pojedynczy
                   rekord, zakoczony now lini. Pola s oddzielone
                   spacjami.    $1   jest   wartoci    wywolania
                   systemowego   getuid(2),   $2   jest  wartoci
                   wywolania  systemowego  geteuid(2),  $3  jest
                   wartoci wywolania systemowego getgid(2), a $4
                   jest    wartoci     wywolania     systemowego
                   getegid(2).   Jeli  s jeszcze jakie dodatkowe
                   pola, to s to identyfikatory  grup,  zwrocone
                   przez  getgroups(2).   W niektorych systemach
                   moe nie by obslugiwana  przynaleno  do  wielu
                   grup.

   Funkcje numeryczne
       AWK ma nastpujce wbudowane funkcje arytmetyczne:

       atan2(y, x)   zwraca arcus tangens y/x w radianach.

       cos(wyra)     zwraca cosinus z wyra w radianach.

       exp(wyra)     funkcja wykladnicza.

       int(wyra)     skraca do liczby calkowitej.

       log(wyra)     funkcja logarytmu naturalnego.

       rand()        zwraca liczb losow z przedzialu 0 i 1.

       sin(wyra)     zwraca sinus z wyra w radianach.

       sqrt(wyra)    pierwiastek kwadratowy.

       srand([wyra]) Uywa   wyra   jako   nowego   nasionka  dla
                     generatora  liczb  losowych.  Bez  podanego
                     wyra, uywany jest czas dnia. Warto zwracana
                     to  poprzednie  nasionko  generatora  liczb
                     losowych.

   Funkcje /lacuchowe
       AWK ma nastpujce wbudowane funkcje lacuchowe:

       asort(s [, d])          Zwraca liczb elementow w rodlowej
                               tablicy  s.    Zawarto   s   jest
                               sortowana     z     zastosowaniem
                               zwyklych    regul     gawk     do
                               porownywania  wartoci, za indeksy
                               posortowanych      wartoci      s
                               azstpowane  s  kolejnymi liczbami
                               calkowitymi, poczwszy od 1.  Jeli
                               podano  opcjonaln  tablic docelow
                               d, to najpierw s  jest  powielana
                               do  d,  a nastpnie sortowana jest
                               d, a indeksy tablicy  rodlowej  s
                               pozostaj niezmienione.

       gensub(r, s, h [, t])   w  lacuchu  docelowym t wyszukuje
                               podlacuchy odpowiadajce  wyraeniu
                               regularnemu   r.   Jeeli  h  jest
                               lacuchem zaczynajcym si od g  lub
                               G,    to    zastpuje    wszystkie
                               znalezione dopasowania r przez s.
                               W   przeciwnym  wypadku,  h  jest
                               liczb wskazujc, ktore z kolejnych
                               dopasowa  r  ma  zosta zastpione.
                               Jeeli nie podano  t,  to  zamiast
                               niego  uywane  jest  $0.  Wewntrz
                               tekstu zastpujcego s, mona posluy
                               si sekwencj \n, gdzie n jest cyfr
                               od 1  do  9,  wskazujc  na  tekst
                               dopasowany przez n-te podwyraenie
                               w nawiasach. Sekwencja \0 oznacza
                               caly  dopasowany  tekst, tak samo
                               jak znak &.  W przeciwiestwie  do
                               sub()   i   gsub(),   jako  wynik
                               funkcji zwracany  jest  zmieniony
                               lacuch,   za   pierwotny   lacuch
                               docelowy pozostaje nie zmieniony.

       gsub(r, s, t)           kady   podlacuch,    odpowiadajcy
                               wyraeniu  regularnemu r w lacuchu
                               t, wymienia na lacuch s, i zwraca
                               liczb  podmian.   Jeli nie podano
                               t, uywa  $0.   Znak  &  w  tekcie
                               zastpujcym   zostanie   zastpiony
                               faktycznie  dopasowanym  tekstem.
                               Uyj  \&  by  otrzyma  literal  &.
                               (Musi to by wpisane  jako  "\\&".
                               Pelniejsze omowienie regul & oraz
                               odwrotnych  ukonikow   w   tekcie
                               zastpujcym   dla  funkcji  sub(),
                               gsub() i  gensub()  znajdziesz  w
                               pozycji      GAWK:      Efektywne
                               programowanie w AWK.)

       index(s, t)             zwraca indeks lacucha t w lacuchu
                               s,  lub  zero, jeli t nie zostalo
                               znalezione.

       length(s)               zwraca dlugo lacucha s lub  dlugo
                               $0, jeli nie podano s.

       match(s, r [, a])       zwraca  pozycj w s, gdzie pojawia
                               si wyraenie  regularne  r.   Jeli
                               nie podano r, zwracane jest zero.
                               Jeli  jest  jednak   obecne,   to
                               dodatkowo   ustawiane  s  zmienne
                               RSTART  i  RLENGTH.    Zauwa,   e
                               kolejno argumentow jest taka sama
                               jak dla operatora ~:  str  ~  re.
                               Jeli podano tablic a, to jest ona
                               czyszczona a nastpnie elementy od
                               1 do n wypelniane s fragmentami s
                               pasujcymi do odpowiednich  ujtych
                               w  nawiasy  podwyrae z r.  Zerowy
                               element  a  zawiera  fragment   s
                               dopasowany  przez  cale  wyraenie
                               regularne r.

       split(s, a, r)          dzieli lacuch s  na  tablic  a  w
                               miejscach rozdzielonych wyraeniem
                               regularnym r, i zwraca liczb pol.
                               Jeli  pominito  r,  zamiast niego
                               uywane  jest  FS.   Na   pocztku,
                               tablica    a   jest   czyszczona.
                               Podzial odbywa si identycznie jak
                               opisany powyej podzial rekordu na
                               pola.

       sprintf(fmt, lista-wyra)
                               wypisuje list-wyra wedlug fmt,  i
                               zwraca lacuch wyjciowy.

       strtonum(str)           Bada str, i zwraca jego numeryczn
                               warto.  Jeli str  zaczyna  si  od
                               pocztkowego   0,   to  strtonum()
                               przyjmuje,  e  str   jest   liczb
                               osemkow.   Jeli str zaczyna si od
                               pocztkowego   0x   lub   0X,   to
                               strtonum()  przyjmuje, e str jest
                               liczb szesnastkow.

       sub(r, s, t)            Podobne    do    gsub(),     lecz
                               podmieniany  jest  tylko pierwszy
                               odpowiadajcy podlacuch.

       substr(s, i, n)         zwraca   maksymalnie    n-znakowy
                               podlacuch  lacucha  s, zaczynajcy
                               si od pozycji i.   Jeli  pominito
                               parametr  n,  uyta zostaje reszta
                               s.

       tolower(str)            zwraca kopi lacucha str, w ktorej
                               wszystkie  wielkie litery zostaly
                               zastpione      malymi.        Nie
                               alfabetyczne  znaki  pozostaj bez
                               zmian.

       toupper(str)            zwraca kopi lacucha str, w ktorej
                               wszystkie   male  litery  zostaly
                               zastpione     wielkimi.       Nie
                               alfabetyczne  znaki  pozostaj bez
                               zmian.

   Funkcje czasu
       Poniewa jednym z podstawowych  zada  programow  AWK  jest
       przetwarzanie  plikow z logami, ktore zawieraj informacje
       czasowe, gawk udostpnia  nastpujce  funkcje,  umoliwiajce
       uzyskiwanie   znacznikow   czasu   (timestamps)   i   ich
       formatowanie.

       mktime(danedaty)
                 Zamienia  danedaty  w  znacznik  czasu  o   tej
                 postaci, co zwracana przez systime().  danedaty
                 jest lacuchem postaci YYYY  MM  DD  HH  MM  SS[
                 DST].   Zawartoci  lacucha  jest sze lub siedem
                 liczb  oznaczajcych  odpowiednio:   pelny   rok
                 lcznie  ze  stuleciem,  miesic od 1 do 12, dzie
                 miesica od 1 do 31, godzina od 0 do 23,  minuta
                 od  0  do  59,  i  sekunda  od  0  do  60, oraz
                 opcjonalna  flaga  zmiany   czasu   na   letni.
                 Wartoci  tych  liczb  nie  musz  lee w podanych
                 zakresach. Na przyklad, godzina  -1  oznacza  1
                 godzin   przed   polnoc.    Przyjto   kalendarz
                 gregoriaski zaczynajcy si od zera, w ktorym rok
                 0  wystpuje  przed  rokiem  1,  a  rok -1 przed
                 rokiem 0.  Zaklda si, e czas jest podany wedlug
                 lokalnej  strefy  czasowej.   Jeli  flaga czasu
                 letniego jest dodatnia,  to  czas  jest  czasem
                 letnim.   Jeli  jest  zerowa,  to standardowym.
                 Jeli jest ujemna (domylne), to mktime() probuje
                 ustali  czy dla zadanego czasu funkcjonuje czas
                 letni.     Jeli    danedaty    nie     zawieraj
                 wystarczajcej  liczby  elementow  lub wyknikowy
                 czas jest poza zakresem, to funkcja zwraca -1.

       strftime(format, timestamp)
                 formatuje timestamp wedlug wskazowek  zawartych
                 w  zmiennej format.  timestamp powinien by taki
                 sam, jak ten, zwracany przez  systime().   Jeli
                 brakuje  parametru timestamp, uywany jest biecy
                 czas dnia. Jeeli  pominito  format,  to  uywany
                 jest domylny format rownowany formatowi wynikow
                 z date(1).  Zobacz specyfikacj funkcji strftime
                 ()  w  ANSI  C,  aby  zobaczy  jakie  konwersje
                 formatow s na  pewno  dostpne.   Razem  z  gawk
                 dostarczana    jest    wersja   public   domain
                 strftime(3) oraz odpowiednia strona  podrcznika
                 man;  jeli ta wersja zostala uyta do zbudowania
                 gawk, to wszystkie  konwersje  opisane  na  tej
                 stronie bd dostpne dla gawk.

       systime() zwraca  biecy  czas  dnia  w liczbach sekund od
                 pocztku Epoki (czyli od polnocy UTC, 1 stycznia
                 1970 na systemach POSIX-owych).

   Funkcje operujce na bitach
       Poczwszy  od  wersji  3.1 gawk, dostpne s ponisze funkcje
       operujce  na  bitach.   Dzialaj  przez  konwersj  wartoci
       zmiennoprzecinkowych   podwojnej  precyzji  na  calkowite
       unsigned long, wykonanie operacji,  a  nastpnie  konwersj
       wyniku z powrotem na zmiennoprzecinkowy.  Te funkcje to:

       and(v1, v2)         Zwraca  bitow  koniunkcj  AND wartoci
                           podanych przez v1 i v2.

       compl(val)          Zwraca bitowe uzupelnienie val.

       lshift(val, ile)    Zwraca warto val, przesunit w lewo  o
                           ile bitow.

       or(v1, v2)          Zwraca  bitow  alternatyw  OR wartoci
                           podanych przez v1 i v2.

       rshift(val, ile)    Zwraca warto val, przesunit w prawo o
                           ile bitow.

       xor(v1, v2)         Zwraca  bitow  alternatyw  wykluczajc
                           XOR wartoci podanych przez v1 i v2.

   Funkcje internacjonalizacji
       Poczwszy od wersji 3.1 gawk, mona uywa wewntrz  programow
       AWK  funkcji  do  tlumaczenia  lacuchow podczas wykonania
       programu.    Szczegoly   opisano   w   GAWK:    Efektywne
       programowanie w AWK.

       bindtextdomain(katalog [, domena])
              Okrela  katalog, w ktorym gawk szuka plikow .mo, w
              przypadku gdy nie bd lub nie mog by umieszczone  w
              ,,standardowych'' miejscach (np., podczas testow).
              Zwraca katalog, z ktorym jest ,,zwizana'' domena.
              Domyln domen jest warto TEXTDOMAIN.  Jeli  katalog
              jest  lacuchem  pustym  (""),  to bindtextdomain()
              zwraca biece wizanie dla zadanej domeny.

       dcgettext(/lacuch [, domena [, kategoria]])
              Zwraca tlumaczenie  /lacucha  w  domenie  tekstowej
              domena  dla  kategorii  locale  kategoria.  Domyln
              domen jest bieca warto TEXTDOMAIN.  Domyln wartoci
              kategorii jest "LC_MESSAGES".
              Jeli  podaje  si  warto  kategorii,  to musi to by
              lacuch rowny jednej ze  znanych  kategorii  locale
              opisanych  w  GAWK: Efektywne programowanie w AWK.
              Trzeba rownie poda domen tekstow. Uyj  TEXTDOMAIN,
              jeli chcesz korzysta z biecej domeny.

FUNKCJE UYTKOWNIKA

       Funkcje w AWK s definiowane nastpujco:

              function nazwa(lista parametr'ow) { instrukcje }

       Funkcje s wykonywane po wywolaniu ich z wyrae wystpujcych
       we  wzorcach  lub   akcjach.   Do   tworzenia   instancji
       parametrow formalnych, zadeklarowanych w funkcji uywane s
       parametry faktyczne uyte w wywolaniu funkcji.  Tablice  s
       przekazywane przez wskazanie, inne zmienne przez warto.

       Poniewa  funkcje  pierwotnie  nie  byly  czci  jzyka AWK,
       obsluga zmiennych lokalnych jest troch niezdarna:  S  one
       deklarowana  jako dodatkowe parametry w licie parametrow.
       Konwencja polega na separowaniu  zmiennych  lokalnych  od
       parametrow  dodatkowymi  spacjami  w licie parametrow. Na
       przyklad:

              function  f(p, q,     a, b) { # a i b s lokalne
                             ..... }

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

       Lewy nawias w wywolaniu funkcji musi wystpowa bezporednio
       za  nazw  funkcji,  bez  wtrconej bialej spacji. Ma to na
       celu zapobieenie niejednoznacznoci skladni  z  operatorem
       konkatenacji  (lczenia). Ograniczenie to nie odnosi si do
       funkcji wbudowanych, ktore s opisane powyej.

       Funkcje mog wola siebie nawzajem i mog  by  rekurencyjne.
       Parametry  funkcji  uywane jako zmienne lokalne s podczas
       wywolania funkcji inicjalizowane na lacuch pusty i  liczb
       zero.   Chcc,  by  funkcja zwracala warto naley posluy si
       skladni: return wyra.  Warto zwracana przez  funkcj  jest
       niezdefiniowana  jeli  nie  podano  wartoci zwracanej lub
       funkcja koczy prac bez jawnej instrukcji powrotu.

       Jeeli  uyto  --lint,  to  gawk  ostrzega  o   wywolaniach
       niezdefiniowanych  funkcji podczas analizy skladni, a nie
       w czasie wykonania.  Wywolanie niezdefiniowanej funkcji w
       czasie wykonania powoduje bld krytyczny.

       Zamiast slowa function mona uywa slowa funct.

DYNAMICZNE /LADOWANIE NOWYCH FUNKCJI

       Poczwszy od wersji 3.1 gawk, mona dynamicznie dodawa nowe
       funkcje  wbudowane  do  pracujcego   interpretera   gawk.
       Dokladne  szczegoly  wykraczaj  poza  zakres  tej  strony
       podrcznika.    Mona   je   znale   w   GAWK:    Efektywne
       programowanie w AWK.

       extension(objekt, funkcja)
               Dynamicznie dolcza plik obiektow wspoluytkowanych
               o  nazwie  objekt,  i  wywoluje  funkcj  z   tego
               obiektu,  do  wykonania  inicjowania.   Obydwa te
               argumenty powinny by podane jako lacuchy.  Zwraca
               warto zwracan przez funkcj.

       Ta  funkcja  jest  dostarczana  i  dokumentowana  w GAWK:
       Efektywne programowanie w AWK, ale wszystko dotyczce  tej
       cechy moe si zmieni w kolejnym wydaniu.  SILNIE zalecamy,
       by nie uywa/l tej funkcji do czego, czego nie masz zamiaru
       robi ponownie.

SYGNA/LY

       pgawk  przyjmuje dwa sygnaly.  SIGUSR1 powoduje, e zrzuca
       on profil i stos wywol funkcji do pliku  profilu,  ktorym
       jest albo awkprof.out, albo plik podany z opcj --profile.
       Nastpnie kontynuuje dzialanie.  SIGHUP powoduje, e zrzuca
       on profil i stos wywol funkcji a nastpnie koczy prac.

PRZYK/LADY

       Wypisz i posortuj nazwy zgloszeniowe (login) wszystkich uytkownikow:

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

       Zlicz linie w pliku:

                 { nlines++ }
            END  { print nlines }

       Poprzed kad lini jej numerem w pliku:

            { print FNR, $0 }

       Konkatenatuj i numeruj linie (wariacja tematu):

            { print NR, $0 }

INTERNACJONALIZACJA

       Stale  lacuchowe  s  cigami znakow ujtymi w cudzyslowy. W
       rodowiskach  innych  ni  angielskojzyczne,  moliwe   jest
       oznakowanie  lacuchow  w  programie  AWK jako wymagajcych
       tlumaczenia na  wlsny  jzyk  narodowy.  Lacuchy  takie  s
       oznaczone   w   programie   AWK   przez   pocztkowy  znak
       podkrelenia ("_").  Na przyklad,

              gawk 'BEGIN { print "hello, world" }'

       zawsze wypisuje hello, world.  Ale,

              gawk 'BEGIN { print _"hello, world" }'

       we Francji moe wypisa bonjour, monde.

       W tworzeniu i uruchamianiu zlokalizowanego  programu  AWK
       wyronia si kilka etapow.

       1.  Dodanie   akcji  BEGIN  przypisujcej  warto  zmiennej
           TEXTDOMAIN do ustawienia  domeny  tekstowej  na  nazw
           skojarzon z naszym programem.

                BEGIN { TEXTDOMAIN = "myprog" }

           Umoliwia to gawkowi znalezienie pliku .mo zwizanego z
           programem.   Be  ztego  kroku,   gawk   uywa   domeny
           tekstowej  messages, ktora prawdopodobnie nie zawiera
           tlumacze dla naszego programu.

       2.  Oznakowanie    pocztkowymi    znakami     podkrelenia
           wszystkich     lacuchow,    ktore    powinny    zosta
           przetlumaczone.

       3.  Jeli to potrzebne,  uycie  w  programie  odpowiednich
           funkcji dcgettext() i/lub bindtextdomain().

       4.  Uruchomienie  gawk --gen-po -f myprog.awk > myprog.po
           w celu utworzenia pliku .po dla naszego programu.

       5.  Zapewnienie  wlaciwego  tlumaczenia,   zbudowanie   i
           zainstalowanie odpowiedniego pliku .mo.

       Funkcje  internacjonalizacji  opisano szczegolowo w GAWK:
       Efektywne programowanie w AWK.

ZGODNO Z POSIX

       Podstawowym celem gawk byla zgodno ze standardem POSIX, a
       take  zgodno z najnowszymi wersjami UNIX awk.  W tym celu
       gawk   zawiera   nastpujce   widzialne   dla   uytkownika
       wlaciwoci, ktore nie s opisane w ksice o AWK, lecz s czci
       awk z Bell Laboratories (Systemu  Vr4),  a  take  s  czci
       standardu POSIX.

       Ksika  wskazuje,  e przypisanie w wierszu polece zachodzi
       gdy awk w innym wypadku otworzyl by argument  jako  plik,
       co   nastpuje   po  wykonaniu  bloku  BEGIN.   Jednak  we
       wczeniejszych  implementacjach,  gdy  takie   przypisanie
       pojawilo   si   przed   jakimikolwiek   nazwami   plikow,
       nastpowalo   ono   przed   uruchomieniem   bloku   BEGIN.
       Aplikacje z czasem zaczly polega na tej "wlaciwoci".  Gdy
       awk zostal zmieniony  tak,  by  odpowiadal  dokumentacji,
       dodano  opcj  -v  do przypisywania wartoci zmiennym przed
       wykonaniem  programu,  aby  usatysfakcjonowa   aplikacje,
       ktore zalealy od starego zachowania.  (Wlaciwo ta zostala
       uzgodniona midzy programistami Bell Laboratories i GNU).

       Opcja  -W,  przeznaczona  dla   wlaciwoci   zalenych   od
       implementacji naley do standardu POSIX.

       Podczas  przetwarzania  argumentow,  gawk uywa specjalnej
       opcji "--", sygnalizujcej koniec  argumentow.   W  trybie
       zgodnoci  bdzie  ostrzegal, lecz poza tym ignorowal opcje
       niezdefiniowane. W normalnym trybie dzialania,  argumenty
       takie s przekazywane do programu AWK, aby je przetworzyl.

       Ksika   o  AWK  nie  definiuje  wartoci  zwracanej  przez
       srand().  Wersja SVr4  UNIX  awk  (oraz  standard  POSIX)
       zwracaj  warto poprzedniego uywanego nasionka, umoliwiajc
       ledzenie  kolejnych  sekwencji  liczb  losowych.  Dlatego
       srand() w gawk rownie zwraca poprzednio uywane nasionko.

       Innymi  nowymi  wlaciwociami s: uywanie wielu opcji -f (z
       MKS awk), tablica ENVIRON, sekwencje specjalne \a oraz \v
       (opracowane  oryginalnie w gawk i przeniesione z powrotem
       do wersji Bell Laboratories); funkcje wbudowane tolower()
       i  toupper()  (z  Bell  Laboratories)  oraz  specyfikacje
       konwersji ANSI C w printf (zrobione pierwotnie  w  wersji
       Bell Laboratories).

W/LACIWOCI HISTORYCZNE

       Istniej dwie historyczne wlaciwoci AWK, obslugiwane przez
       gawk.   Po  pierwsze,  moliwe  jest   wywolanie   funkcji
       wbudowanej  length() nie tylko bez argumentow, ale rownie
       bez nawiasow! Tak wic

              a = length # wity Algol 60, Batman!

       oznacza to samo co jedno z poniszych

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

       Wlaciwo  ta  jest  oznaczona   jako   "nieaprobowana"   w
       standardzie POSIX i gawk wypisuje ostrzeenie o jej uyciu,
       o ile podano w wierszu polece opcj -W lint.

       Inn wlaciwoci jest uywanie instrukcji continue lub  break
       poza   cialami   ptli  while,  for  lub  do.   Tradycyjne
       implementacje AWK traktowaly takie uycie jako  rownowanik
       instrukcji  next.   Gawk realizuje ten sposob uycia, jeli
       podano opcj --traditional.

ROZSZERZENIA GNU

       Gawk ma kilka rozszerze w stosunku do POSIX awk.   S  one
       opisane  w tej sekcji. Wszystkie rozszerzenia, ktore s tu
       opisane mona wylczy, wywolujc gawk z opcj --traditional.

       Nastpujce wlaciwoci gawk nie s dostpne w  wersjach  POSIX
       awk.

       o Dla   plikow  podanych  opcj  -f  nie  jest  wykonywane
         przeszukiwanie cieki.   option.   Dlatego  te,  zmienna
         rodowiskowa AWKPATH nie jest zmienn specjaln.

       o Sekwencja specjalna \x (Wylczana przez --posix.)

       o Funkcja fflush() (Wylczana przez --posix.)

       o Moliwo  kontynuowania linii po ?  i :.  (Wylczana przez
         --posix.)

       o Stale osemkowe i szesnastkowe w programach AWK.

       o Zmienne ARGIND, BINMODE, ERRNO, LINT, RT  i  TEXTDOMAIN
         nie s specjalne.

       o Zmienna  IGNORECASE  oraz  jej  efekty  uboczne  nie  s
         dostpne.

       o Zmienna  FIELDWIDTHS  oraz  rozdzielanie  o   ustalonej
         szerokoci pola.

       o Nie jest dostpna tablica PROCINFO

       o Poslugiwanie si RS jako wyraeniem regularnym.

       o Nie  s  rozpoznawane  specjalne nazwy plikow dostpne do
         przeadresowa I/O.

       o Operator |& do tworzenia procesow wspolbienych.

       o Moliwo  wydzielania  pojedynczych  znakow  przy   uyciu
         lacucha  pustego  jako  wartoci  FS oraz jako trzeciego
         argumentu funkcji split().

       o Uycie  delete  array  do  kasowania   calej   zawartoci
         tablicy.

       o Uycie  nextfile  do  porzucenia  przetwarzania  biecego
         pliku wejciowego.

       o Opcjonalny drugi argument funkcji close().

       o Opcjonalny trzeci argument funkcji match().

       o Moliwo uycia  specyfikatorow  pozycyjnych  w  printf  i
         sprintf().

       Funkcje
         and(), asort(), bindtextdomain(), compl(), dcgettext(),
         gensub(),   lshift(),   mktime(),    or(),    rshift(),
         strftime(), strtonum(), systime() i xor().  ! .

       o Lokalizowalne lacuchy.

       o Dynamiczne dodawanie nowych funkcji wbudowanych, funkcj
         extension().

       Ksika o AWK nie definiuje wartoci zwracanej przez  funkcj
       close().   Zaimplementowana w Gawk funkcja close() zwraca
       warto z fclose(3) lub  pclose(3),  zalenie  czy  zamykano
       plik  czy  potok.   Zwraca  kod  zakoczenia  procesu przy
       zamykaniu potoku wejciowego.   Wartoci  zwracan  jest  -1
       jeli  dany  plik,  potok  czy  proces wspolbieny nie byly
       otwarte za pomoc przekierowania.

       Gdy  gawk  jest  wywolany  z  opcj  --traditional,   jeli
       argumentem  fs opcji -F jest "t", to FS jest ustawiane na
       znak  tabulacji.   Zauwa,  e  wpisanie  gawk   -F\t   ...
       powoduje  po  prostu zacytowanie przez powlok znaku "t" i
       nie przesyla "\t" do opcji -F.  Poniewa  jest  to  raczej
       brzydki  przypadek  specjalny,  nie  jest  to  zachowanie
       domylne. Zachowanie to nie pojawia si rownie  po  podaniu
       opcji  -W  posix.   Aby  faktycznie uzyska znak tabulacji
       jako separator pol, najlepiej posluy si apostrofami  jako
       znakami cytowania: gawk -F'\t' ....

ZMIENNE RODOWISKOWE

       Do   podania  listy  katalogow  przegldanych  przez  gawk
       podczas poszukiwania plikow zadanych opcjami -f i  --file
       mona posluy si zmienn rodowiskow AWKPATH.

       Jeli w rodowisku istnieje zmienna POSIXLY_CORRECT to gawk
       zachowuje si tak, jakby podano mu w wierszu  polece  opcj
       --posix.  Jeli podano opcj --lint, gawk wyda ostrzeenie o
       tym efekcie.

ZOBACZ TAKE

       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.

       GAWK:   Efektywne   programowanie  w  AWK,  Edition  3.0,
       opublikowana przez Free Software Foundation, 2001.
       [od tlum.: powysza publikacja dostarczana  jest  razem  z
       opisywan wersj programu]

B/LDY

       Opcja   -F   niekoniecznie   ma   wlaciwo   przypisywania
       zmiennych; pozostaje tylko dla zgodnoci wstecznej.

       Niepoprawne skladniowo programy z pojedynczego znaku  mog
       powodowa  przepelnienie  stosu  analizatora, dajc niezbyt
       pomocny komunikat. Programy takie s zaskakujco trudne  do
       do  analizy w calkiem ogolnym przypadku, a wysilek, by to
       jednak robi nie jest tego wart.

AUTORZY

       Oryginalna   wersja   UNIX   awk   byla   opracowana    i
       zaimplementowana  przez Alfreda Aho, Petera Weinbergera i
       Briana Kernighana z Bell Laboratories.   Brian  Kernighan
       wci pracuje nad ni i rozszerza j.

       Paul  Rubin  i  Jay Fenlason, z Free Software Foundation,
       napisali  wersj  gawk,  zgodn  z  oryginaln  wersj   awk,
       rozprowadzan   w   Seventh   Edition  UNIX.   John  Woods
       wprowadzil  wiele  poprawek.   David  Trueman,  z   pomoc
       Arnolda  Robbinsa,  uczynil gawk zgodnym z now wersj UNIX
       awk.  Arnold Robbins jest biecym opiekunem projektu.

       Pierwotny port pod  DOS  zostal  dokonany  przez  Conrada
       Kwoka  i  Scotta  Garfinkle.  Scott  Deifik  jest obecnym
       opiekunem wersji DOS. Pat Rankin zrobil port  na  VMS,  a
       Michal  Jaegermann zrobil port na Atari ST.  Port na OS/2
       zostal zrobiony przez Kai Uwe  Rommela,  przy  udziale  i
       pomocy  Darrela Hankersona. Fred Fish zapewnil obslug dla
       Amigi, Stephen Davies przeniesienie na Tandem,  a  Martin
       Brown na BeOS.

INFORMACJA O WERSJI

       Ta  strona  podrcznika  man  opisuje gawk, w wersji numer
       3.1.0.

RAPORTY O B/LDACH

       Jeli znajdziesz w gawk  bld,  prosz  o  przeslanie  listu
       poczt elektroniczn na adres bug-gnu-utils@gnu.org, z kopi
       (carbon  copy)  na  arnold@gnu.org.   Prosz  o  zalczenie
       wersji  systemu  operacyjnego,  wersji gawk (otrzymanej z
       gawk --version), wersji  kompilatora  C,  ktorym  zostala
       skompilowana,  oraz  moliwie  malego programu testowego i
       danych, ktore umoliwiaj powtorzenie problemu.

       Przed wyslaniem  raportu  o  bldzie,  zrob  dwie  rzeczy.
       Najpierw  sprawd,  czy  masz  najnowsz wersj gawk.  Wiele
       bldow (zwykle subtelnych) jest poprawianych w kadej nowej
       wersji  i  jeli twoja wersja jest przedawniona, to by moe
       problem jest ju rozwizany. Po drugie,  prosz,  przeczytaj
       uwanie  t  stron  podrcznika  man oraz podrczniki, aby si
       upewni, e to, co uwaasz za bld, jest nim naprawd,  a  nie
       tylko dziwactwem w konstrukcji jzyka.

       Cokolwiek  zrobisz,  NIE  wysylaj zgloszenia bldu na grup
       dyskusyjn comp.lang.awk.  Mimo,  e  opiekunowie  projektu
       gawk  czasami czytaj t grup, wysylanie na ni zglosze jest
       drog niepewn.  Prosz,  uyj  zamiast  tego  podanych  wyej
       adresow poczty elektronicznej.

PODZIKOWANIA

       Brian   Kernighan  z  Bell  Laboratories  dal  wartociowe
       wsparcie podczas testowania i debuggowania. Dzikujemy.

KOPIOWANIE NINIEJSZEJ DOKUMENTACJI

       [Sekcja nietlumaczona z uwagi na ograniczenie  zawarte  w
       ostatnim akapicie]

       Copyright  (C)  1989, 1991-2001 Free Software Foundation,
       Inc.

       Permission is granted to  make  and  distribute  verbatim
       copies  of this manual page provided the copyright notice
       and this permission notice are preserved on all copies.

       Permission is granted to  copy  and  distribute  modified
       versions  of  this  manual  page under the conditions for
       verbatim copying,  provided  that  the  entire  resulting
       derived   work  is  distributed  under  the  terms  of  a
       permission notice identical to this one.

       Permission is granted to copy and distribute translations
       of  this  manual  page  into  another language, under the
       above conditions for modified versions, except that  this
       permission notice may be stated in a translation approved
       by the Foundation.

INFORMACJE O T/LUMACZENIU

       Powysze tlumaczenie pochodzi z nieistniejcego ju Projektu
       Tlumaczenia  Manuali  i  moe  nie  by  aktualne.  W razie
       zauwaenia ronic  midzy  powyszym  opisem  a  rzeczywistym
       zachowaniem  opisywanego  programu lub funkcji, prosimy o
       zapoznanie  si  z  oryginaln  (angielsk)   wersj   strony
       podrcznika.