Provided by: manpages-pl_4.27.0-1_all bug

NAZWA

       gawk - język wyszukiwania i przetwarzania wzorców

SKŁADNIA

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

WAŻNA INFORMACJA

       Niniejsza  strona  podręcznika  została  udostępniona z grzeczności. Jedynym Źródłem Prawdy programu gawk
       jest    dokumentacja    Texinfo,    dostępna    w    wielu    formatach    w    sieci     pod     adresem
       https://www.gnu.org/software/gawk/manual.  Może  być  również  zainstalowana  w  podsystemie  Info na tym
       komputerze, dostępna wówczas za pośrednictwem polecenia info(1).

       W przypadku różnic między dokumentacją Texinfo i niniejszą stroną podręcznika,  dokumentacja  Texinfo  ma
       pierwszeństwo.

OPIS

       Gawk  jest implementacją GNU języka programowania AWK. Odpowiada on definicji tego języka z POSIX 1003.1.
       Wersja ta jest z kolei oparta na opisie z The AWK Programming Language, napisanym przez Aho, Kernighana i
       Weinbergera. Gawk udostępnia dodatkowe funkcje  z  bieżącej  wersji  awk  Briana  Kernighana  oraz  wiele
       rozszerzeń charakterystycznych dla GNU.

       Wiersz  poleceń  składa  się  z opcji dla gawk, tekstu programu (jeśli nie podano go poprzez opcję -f lub
       --include)  i wartości, które mają być udostępnione w predefiniowanych zmiennych ARGC i ARGV.

WSTĘP

       Niniejsza strona  podręcznika  jest  bardzo  zwięzła.  Wszystkie  szczegóły  opisano  w  GAWK:  Efektywne
       programowanie  w  AWK  i  należy  się  z  nim zapoznać aby poznać pełny opis danej funkcji. Tam, gdzie to
       możliwe, zamieszczone są odnośniki do wersji online tego podręcznika.

FORMAT OPCJI

       Opcje gawk mogą być zarówno tradycyjnymi POSIX-owymi jednoliterowymi opcjami, jak  i  długimi  opcjami  w
       stylu  GNU.  Opcje  POSIX-owe  zaczynają  się  pojedynczym  „-”,  a opcje GNU „--”.  Opcje w stylu GNU są
       udostępniane zarówno dla właściwości specyficznych dla GNU,  jak  i  dla  właściwości  POSIX-owych.  Inne
       implementacje AWK prawdopodobnie jednak będą przyjmować tylko tradycyjne, jednoliterowe opcje.

       Opcje  specyficzne  dla  gawk są używane zwykle w długiej postaci. Argumenty przekazywane długim opcjom w
       stylu GNU są łączone z opcją przy użyciu znaku =, bez dodatkowych spacji  lub  przekazywane  w  następnym
       argumencie wiersza poleceń (tj. bez znaku równości i po spacji).

       Oprócz tego, każda długa opcja ma odpowiadającą jej opcję krótką, dzięki czemu funkcjonalność danej opcji
       może być używana ze skryptów wykonywalnych #!.

OPCJE

       Gawk  akceptuje  następujące  opcje.  Najpierw podane są opcje standardowe, następnie opcje do rozszerzeń
       gawk, ułożone alfabetycznie według krótkiej opcji.

       -f program-file, --file plik-programu
              Odczytuje źródło programu AWK z pliku plik-programu, zamiast odczytywać go z pierwszego  argumentu
              wiersza  poleceń.  Można  użyć  wielu opcji -f. Pliki odczytywane za pomocą -f są traktowane w ten
              sposób, jak gdyby zaczynały się wyrażeniem @namespace "awk".

       -F fs, --field-separator fs
              Używa fs jako wejściowego separatora pola (wartość predefiniowanej zmiennej FS).

       -v var=val, --assign var=val
              Przyznaje zmiennej var wartość val. Robi to przed uruchomieniem programu. Takie wartości zmiennych
              są dostępne dla reguły BEGIN programu AWK.

       -b, --characters-as-bytes
              Traktuje wszelkie dane  wejściowe  jako  znaki  jednobajtowe.  Niniejszą  opcję  przesłania  opcja
              --posix.

       -c, --traditional
              Pracuje  w trybie zgodności. W trybie tym, gawk zachowuje się identycznie z awk Briana Kernighana;
              nie jest rozpoznawane żadne ze specyficznych dla GNU rozszerzeń.

       -C, --copyright
              Wypisuje krótką wersję informacji o prawach autorskich GNU  na  standardowe  wyjście  i  pomyślnie
              kończy działanie.

       -d[plik], --dump-variables[=plik]
              Wypisuje  do  pliku  posortowaną  listę  zmiennych  globalnych,  ich  typów  i końcowych wartości.
              Domyślnym plikiem jest awkvars.out w katalogu bieżącym.

       -D[plik], --debug[=plik]
              Włącza  debugowanie  programów  AWK.  Domyślnie,  debuger  odczytuje  polecenia  interaktywnie   z
              klawiatury  (standardowego  wejścia).  Opcjonalny  argument  plik  określa plik z listą poleceń do
              debugera, w celu wykonania ich nieinteraktywnie.
              W tym trybie wykonania, gawk ładuje kod źródłowy AWK i czeka na polecenia debugowania.  Gawk  może
              debugować  jedynie źródła programu AWK przekazane opcjami -f i --include. Debuger udokumentowano w
              GAWK:            Efektywne            programowanie            w             AWK;             zob.
              https://www.gnu.org/software/gawk/manual/html_node/Debugger.html#Debugger.

       -e tekst-programu, --source tekst-programu
              Używa  tekstu-programu  jako  kodu  źródłowego  AWK. Każdy argument podany za pomocą opcji -e jest
              traktowana tak, jak gdyby zaczynała się instrukcją @namespace "awk".

       -E plik, --exec plik
              Podobnie jednak do -f, opcja ta jest przetwarzana na końcu. Powinna być używana  w  skryptach  #!,
              szczególnie  w  przypadku  aplikacji CGI, aby unikać przekazywania opcji lub kodu źródłowego (!) w
              wierszu poleceń z URL-a. Opcja ta wyłącza przypisania zmiennych wiersza poleceń.

       -g, --gen-pot
              Przegląda i analizuje program AWK program, i tworzy na standardowym wyjściu plik formatu GNU  .pot
              (Portable Object Template), zawierający wpisy dla wszystkich podlegających lokalizacji łańcuchów w
              programie. Sam program nie jest wykonywany.

       -h, --help
              Wypisuje  na  standardowe  wyjście  krótkie  podsumowanie  dostępnych  opcji. Zgodnie z GNU Coding
              Standards, te opcje powodują natychmiastowe, pomyślne zakończenie pracy.

       -i plik-do-włączenia, --include plik-do-włączenia
              Ładuje  bibliotekę  źródłową  awk.  Wyszukiwanie  biblioteki  ma  miejsce   za   pomocą   zmiennej
              środowiskowej  AWKPATH.  Jeśli  pierwotne  wyszukiwanie  zawiedzie,  kolejne  będzie  wykonane  po
              dołączeniu przyrostka .awk. Plik będzie załadowany jednokrotnie (tj. eliminowane są duplikaty),  a
              kod  nie tworzy źródła głównego programu. Pliki odczytywane za pomocą --include są traktowane tak,
              jak gdyby zaczynały się instrukcją @namespace "awk".

       -I, --trace
              Wypisuje wewnętrzne nazwy kodów bajtowych w trakcie ich wykonywania, przy  działającym  programie.
              Ślad  jest  wypisywany  na  standardowe  wyjście  błędów.  Każdy  „kod  operacji” („op code”) jest
              poprzedzany na wyjściu znakiem +.

       -k, --csv
              Włącza specjalne przetwarzanie CSV. Zob.  Wartości  rozdzielone  przecinkiem  (CSV)  poniżej,  aby
              dowiedzieć się więcej.

       -l biblioteka, --load biblioteka
              Ładuje rozszerzenie gawk z biblioteki współdzielonej. Wyszukiwanie biblioteki ma miejsce za pomocą
              zmiennej środowiskowej AWKLIBPATH. Jeśli pierwotne wyszukiwanie zawiedzie, kolejne będzie wykonane
              po  dołączeniu domyślnego przyrostka (rozszerzenia) biblioteki współdzielonej dla danej platformy.
              Oczekuje się, że procedura inicjalizacji biblioteki będzie miała nazwę dl_load().

       -L [wartość], --lint[=wartość]
              Zapewnia ostrzeżenia o konstrukcjach, które są wątpliwe lub  nieprzenośne  na  inne  implementacje
              AWK.       Lista       dopuszczalnych       wartości      jest      dostępna      pod      adresem
              https://www.gnu.org/software/gawk/manual/html_node/Options.html#Options.

       -M, --bignum
              Wymusza korzystanie z arytmetyki liczb o dowolnej precyzji. Opcja ta nie  odniesie  skutku,  jeśli
              nie  skompilowano  gawk  z  obsługą  bibliotek  GMP  i  MPFR  GNU  (w takim przypadku gawk wypisze
              ostrzeżenie).

              UWAGA: Funkcja ta istnieje warunkowo. Główny opiekun gawk się nią już nie zajmuje, jednak robi  to
              jeden  z  członków  zespołu deweloperskiego. Jeśli sytuacja ulegnie zmianie na niekorzyść, funkcja
              zostanie usunięta z gawk.

       -n, --non-decimal-data
              Rozpoznaje wartości ósemkowe i szesnastkowe w danych wejściowych.   Opcji  tej  należy  używać  ze
              szczególną ostrożnością!

       -N, --use-lc-numeric
              Zmusza   gawk   do  korzystania  ze  znaku  dziesiętnego  z  locale  (ustawień  językowych),  przy
              przetwarzaniu danych wejściowych.

       -o[plik], --pretty-print[=plik]
              Wypisuje wersję programu sformatowaną za pomocą pretty-print  do  pliku.  Domyślnym  plikiem  jest
              awkprof.out w bieżącym katalogu. Opcja ta wymusza --no-optimize.

       -O, --optimize
              Włącza  domyślne  optymalizacje  gawka  wobec  wewnętrznej reprezentacji programu. Opcja domyślnie
              włączona.

       -p[plik-prof], --profile[=plik-prof]
              Rozpoczyna sesję profilowania  i  wysyła  dane  profilowania  do  pliku-prof.  Domyślnie  jest  to
              awkprof.out  w  bieżącym  katalogu.  Profil  zawiera liczbę wykonań każdej instrukcji programu (na
              lewym marginesie) oraz liczbę wywołań funkcji dla każdej funkcji użytkownika. W  tym  trybie  gawk
              działa wolniej. Opcja wymusza --no-optimize.

       -P, --posix
              Włącza tryb zgodności i wyłącza wiele podstawowych rozszerzeń.

       -r, --re-interval
              Włącza  użycie  wyrażeń  przedziałowych  (interval expressions) w dopasowaniu wyrażeń regularnych.
              Wyrażenia przedziałowe są domyślnie włączone, a opcja ta pozostaje ze  względu  na  kompatybilność
              wsteczną.

       -s, --no-optimize
              Wyłącza domyślne optymalizacje gawka wobec wewnętrznej reprezentacji programu.

       -S, --sandbox
              Uruchamia gawk w trybie piaskownicy, wyłączając funkcję system(), przekierowanie wejścia za pomocą
              getline,  przekierowania  wyjścia za pomocą print i printf oraz ładowanie rozszerzeń dynamicznych.
              Wykonywanie poleceń (poprzez potoki) również jest wyłączone.

       -t, --lint-old
              Daje ostrzeżenia o konstrukcjach, które nieprzenośne na pierwotną wersję UNIX awk.

       -V, --version
              Wypisuje na standardowe wyjście informacje o danej kopii programu gawk.  Jest  to  przydatne  przy
              zgłaszaniu  błędów.  Zgodnie  z  GNU  Coding Standards, te opcje powodują natychmiastowe, pomyślne
              zakończenie pracy.

       --     Sygnalizuje koniec opcji. Dzięki  temu  następne  argumenty  programu  AWK  mogą  rozpoczynać  się
              myślnikiem „-”. [Na przykład rozpoczynające się myślnikiem nazwy plików].

       W  trybie  zgodności  wszelkie  inne opcje są zaznaczane jako niepoprawne, lecz poza tym są ignorowane. W
       normalnym trybie działania, jeśli dostarczono tekst programu AWK, nieznane opcje  są  mu  przekazywane  w
       tablicy ARGV, aby mógł je sobie sam przetworzyć.

       Ze  względu  na kompatybilność z POSIX, można skorzystać z opcji -W, po której należy podać nazwę długiej
       opcji.

WYWOŁANIE PROGRAMU AWK

       Program AWK składa się z sekwencji opcjonalnych  dyrektyw,  instrukcji  wzorzec-akcja  oraz  opcjonalnych
       definicji funkcji.

              @include "nazwa_pliku"
              @load "nazwa_pliku"
              @namespace "nazwa"
              wzorzec   { instrukcje akcji }
              function nazwa(lista parametrów) { instrukcje }

       Gawk  najpierw  odczytuje  źródło  programu  z podanych plików-programu, jeśli je podano, z argumentów do
       opcji --source lub z pierwszego nieopcyjnego argumentu wiersza poleceń. Opcje -f i --source można podawać
       wielokrotnie w wierszu polecenia. Gawk czyta tekst programu tak, jakby wszystkie  pliki-programu  zostały
       połączone ze sobą w całość.

       Dodatkowo,  do  dołączania  innych plików źródłowych do swojego programu, mogą służyć wiersze zaczynające
       się od @include. Jest to równoważne użyciu opcji --include.

       Do ładowania funkcji rozszerzających mogą służyć wiersze zaczynające się od  @load.  Jest  to  równoważne
       użyciu opcji --load.

       Zmienna  środowiskowa  AWKPATH  określa  ścieżkę przeszukiwania, używaną do znajdowania plików źródłowych
       podanych  w  opcji  -f  i  --include.  Jeśli  zmienna  ta  nie  istnieje,  domyślną  ścieżką  staje   się
       ".:/usr/local/share/awk".  (Faktyczny  katalog  może  być  różny,  zależnie  od  tego  jak skompilowano i
       zainstalowano awk.)  Jeśli nazwa pliku, podana opcji -f zawiera  znak  „/”,  nie  jest  dokonywane  żadne
       przeszukiwanie ścieżki.

       Zmienna  środowiskowa AWKLIBPATH określa ścieżkę przeszukiwania, używaną do znajdowania plików źródłowych
       podanych  w  opcji  --include.  Jeśli   zmienna   ta   nie   istnieje,   domyślną   ścieżką   staje   się
       "/usr/local/lib/gawk".   (Faktyczny  katalog  może  być  różny,  zależnie  od  tego  jak  skompilowano  i
       zainstalowano awk.)

       Gawk  wywołuje  programy  AWK  w  następującej  kolejności.  Najpierw  dokonuje  wszelkich  inicjalizacji
       zmiennych, zadanych w opcjach -v. Następnie kompiluje program do postaci wewnętrznej. Potem wywołuje kod,
       zawarty  w  regułach  BEGIN  (jeśli  istnieją), a następnie zaczyna odczytywać każdy z plików, podanych w
       tablicy ARGV (aż do ARGV[ARGC-1]). Jeśli nie  podano  takich  nazw  plików,  gawk  odczytuje  standardowe
       wejście.

       Jeśli  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 każdej reguły BEGIN.)

       Jeśli wartość konkretnego elementu ARGV jest pusta (""), to gawk ją pomija.

       Dla każdego pliku wejściowego, jeśli  istnieje  reguła  BEGINFILE,  gawk  wykonuje  powiązany  kod  przed
       zawartością pliku. Podobnie, gawk wykonuje kod powiązany z regułami ENDFILE po przetworzeniu pliku.

       Dla  każdego  rekordu  wejścia gawk dokonuje porównania, sprawdzając czy odpowiada on jakiemuś wzorcowi z
       programu AWK. Jeśli wzorzec będzie odpowiadał rekordowi, zostanie wykonana związana z nim  akcja.  Wzorce
       są sprawdzane w kolejności ich pojawienia się w programie.

       Na koniec, gdy wyczerpane zostanie całe wejście, gawk wywołuje kod zawarty w regułach END.

   Katalogi w wierszu polecenia
       Zgodnie  z  normą POSIX, pliki podane w wierszu polecenia awk muszą być plikami tekstowymi. Jeśli tak nie
       jest, zachowanie jest „niezdefiniowane”. Większość wersji programu akw traktuje katalog podany w  wierszu
       polecenia jako błąd krytyczny.

       W  przypadku  programu gawk, katalog podany w wierszu polecenia powoduje wypisanie ostrzeżenia, lecz poza
       tym jest po prostu pomijany. Jeśli poda się opcję --posix lub --traditional, to gawk potraktuje  katalogi
       w wierszu polecenia jako błąd krytyczny.

ZMIENNE, REKORDY I POLA

       Zmienne  AWK  są  dynamiczne;  zaczynają  istnieć  gdy  są  po  raz  pierwszy  użyte.   Ich  wartości  są
       zmiennoprzecinkowe, znakowe (ciągi znaków)  lub  jedne  i  drugie  naraz,  zależnie  od  sposobu  użycia.
       Dodatkowo,   gawk   pozwala   na   zmienne  typu  wyrażenia  regularnego.  AWK  posiada  również  tablice
       jednowymiarowe; symulowane mogą być  również  tablice  wielowymiarowe.  Jednak  gawk  zapewnia  prawdziwe
       tablice  tablic.  Podczas  działania  programu  ustawianych jest kilka predefiniowanych zmiennych; są one
       opisane niżej.

   Rekordy
       Rekordy są zwykle rozdzielone znakami nowego wiersza. Można to zmienić  przypisując  wartości  wbudowanej
       zmiennej              RS.              Więcej              szczegółów              na             stronie
       https://www.gnu.org/software/gawk/manual/html_node/Records.html.

   Pola
       Przy odczytywaniu każdego rekordu wejściowego, gawk dzieli rekord na pola za pomocą wartości zmiennej  FS
       służącej  jako  separator  pól.  Dodatkowo,  zmiennymi FIELDWIDTHS i FPAT można kontrolować dzielenie pól
       wejściowych.        Więcej        szczegółów         opisano,         począwszy         od         strony
       https://www.gnu.org/software/gawk/manual/html_node/Fields.html.

       Do  każdego  pola w rekordzie wejściowym można odwołać się przez jego pozycję: $1, $2, itd. $0 jest całym
       rekordem, łącznie z początkowymi i końcowymi białymi znakami.

       Zmienna NF jest ustawiana na całkowitą liczbę pól w rekordzie wejściowym.

       Odniesienia do pól nieistniejących (np. pól znajdujących się za $NF) dają łańcuch zerowy. Jednak  nadanie
       nieistniejącemu  polu  wartości  (np.   $(NF+2)  = 5) zwiększa wartość licznika NF, a pola znajdujące się
       „pomiędzy”, inicjuje łańcuchem zerowym; przypisanie to powoduje również  ponowne  przetworzenie  wartości
       zmiennej $0, w której pola zostaną rozdzielone wartością OFS. Odniesienia do pól numerowanych wartościami
       ujemnymi powoduje błąd krytyczny. Zmniejszenie licznika NF powoduje utratę wartości przez pola znajdujące
       się  poza  nową  wartością  licznika,  a wartość zmiennej $0 zostanie przeliczona, z polami rozdzielonymi
       wartością OFS.

       Przypisanie wartości istniejącemu polu powoduje ponowne utworzenie całego rekordu podczas  odwołania  się
       do  $0.   Podobnie,  przypisanie  wartości do $0 powoduje, że rekord jest ponownie dzielony, tworząc nowe
       wartości pól.

   Wartości rozdzielone przecinkiem (CSV)
       Przy wywołaniu z opcją -k lub --csv, gawk  nie  korzysta  ze  zwykłego  rozstrzygania  o  rekordach  oraz
       dzieleniu  pól  opisanego  powyżej.  Zamiast  tego,  rekordy  są rozdzielane niecytowanymi znakami nowego
       wiersza, a pola są rozdzielane przecinkiem. Pola zawierające przecinki lub znaki  nowego  wiersza  należy
       ująć   w  cudzysłów  („"”),  a  cudzysłowy  wewnątrz  pola  –  podwoić.  Więcej  szczegółów  pod  adresem
       https://www.gnu.org/software/gawk/manual/html_node/Comma-Separated-Fields.html.

   Wbudowane zmienne
       Poniżej wypisano wbudowano zmienne programu gawk. Lista ta jest celowo zwięzła. Więcej szczegółów opisano
       na stronie https://www.gnu.org/software/gawk/manual/html_node/Built_002din-Variables.

       ARGC        Liczba argumentów wiersza poleceń.

       ARGIND      Indeks w tablicy ARGV bieżąco przetwarzanego pliku.

       ARGV        Tablica argumentów wiersza poleceń. Tablica ta jest indeksowana od 0 do ARGC - 1.

       BINMODE     Na systemach  nie-POSIX-owych,  określa  użycie  trybu  „binarnego”  do  wszystkich  operacji
                   wejścia/wyjścia         plików.         Więcej         szczegółów         pod         adresem
                   https://www.gnu.org/software/gawk/manual/html_node/PC-Using.html.

       CONVFMT     Format konwersji dla liczb, domyślnie "%.6g".

       ENVIRON     Tablica zawierająca wartości bieżącego środowiska.  Tablica  ta  jest  indeksowana  zmiennymi
                   środowiskowymi, każdy element tablicy jest wartością danej zmiennej.

       ERRNO       Jeśli  pojawi  się  błąd  systemowy podczas przekierowywania dla getline, podczas odczytu dla
                   getline lub podczas close(), to ERRNO jest ustawiana na łańcuch opisujący  błąd.  Podlega  on
                   tłumaczeniu przy ustawieniach locale innych niż angielskie.

       FIELDWIDTHS Jest  rozdzieloną  białymi  znakami listą szerokości pól. Jeśli zmienna ta jest ustawiona, to
                   gawk rozbija wejście na pola o stałych szerokościach (domyślnie rozbija  je  według  wartości
                   separatora  FS).  Każdą szerokość pola można opcjonalnie poprzedzić wartościami rozdzielonymi
                   dwukropkiem, określającymi liczbę znaków do pominięcia, przed rozpoczęciem pola.

       FILENAME    Nazwa pliku bieżącego pliku wejściowego. Jeśli nie podano plików w wierszu poleceń,  FILENAME
                   przechowuje wartość „-”. Wartość zmiennej FILENAME jest niezdefiniowana wewnątrz reguły BEGIN
                   (chyba że zostanie nadana przez getline).

       FNR         Liczba rekordów wejściowych w bieżącym pliku wejściowym.

       FPAT        Wyrażenie  regularne opisujące zawartość pól w rekordzie. Jeśli zmienna ta jest ustawiona, to
                   gawk przetwarza wejście na pola pasujące do wyrażenia regularnego, zamiast używać wartości FS
                   jako separatora pól.

       FS          Separator   pól   wejściowych,   domyślnie   spacja.   Więcej    szczegółów    pod    adresem
                   https://www.gnu.org/software/gawk/manual/html_node/Field-Separators.html.

       FUNCTAB     Tablica,  której  indeksy  i  powiązane  wartości  są nazwami wszystkich zdefiniowanych przez
                   użytkownika lub będących rozszerzeniami funkcjami w programie. UWAGA: w tablicy  FUNCTAB  nie
                   można używać instrukcji delete.

       IGNORECASE  Kontroluje  wrażliwość  na  wielkość  znaków  wszystkich  wyrażeń  regularnych  i operacji na
                   łańcuchach         tekstowych.         Więcej         szczegółów         pod          adresem
                   https://www.gnu.org/software/gawk/manual/html_node/Case_002dsensitivity.html.

       LINT        Zapewnia dynamiczną kontrolę opcji --lint z wnętrza programu AWK.

       NF          Liczba pól w bieżącym rekordzie wejściowym.

       NR          Całkowita liczba odczytanych do tej pory rekordów wejściowych.

       OFMT        Format wyjściowy liczb, domyślnie "%.6g".

       OFS         Separator pól wyjściowych, domyślnie spacja.

       ORS         Separator rekordów wyjściowych, domyślnie nowa linia.

       PREC        Robocza precyzja liczb zmiennoprzecinkowych o dowolnej precyzji, domyślnie 53.

       PROCINFO    Elementy  tej  tablicy  zapewniają  dostęp  do informacji o działającym programie AWK. Więcej
                   szczegółów pod adresem https://www.gnu.org/software/gawk/manual/html_node/Auto_002dset.

       ROUNDMODE   Tryb zaokrąglania w przypadku arytmetyki liczb  o  dowolnej  precyzji,  domyślnie  "N"  (tryb
                   roundTiesToEven         IEEE-754).         Więcej        szczegółów        pod        adresem
                   https://www.gnu.org/software/gawk/manual/html_node/Setting-the-rounding-mode.

       RS          Separator rekordów wejściowych, domyślnie nowy wiersz.

       RT          Zakończenie rekordu.  Gawk ustawia  RT  na  tekst  wejściowy,  który  pasował  do  znaku  lub
                   wyrażenia regularnego określonego przez RS.

       RSTART      Indeks pierwszego znaku dopasowanego funkcją match(); 0 w przypadku braku dopasowania.

       RLENGTH     Długość łańcucha dopasowanego funkcją match(); -1 w przypadku braku dopasowania.

       SUBSEP      Łańcuch,  używany  do rozdzielania wielokrotnych indeksów w elementach tablicowych, domyślnie
                   jest to "\034".

       SYMTAB      Tablica, której indeksy są nazwami wszystkich zdefiniowanych zmiennych globalnych i tablic  w
                   programie.  W  tablicy SYMTAB nie można używać instrukcji delete, ani przypisywać elementów z
                   indeksami, które nie są nazwą zmiennych.

       TEXTDOMAIN  Dziedzina tekstowa programu AWK.  Stosowane od odszukania zlokalizowanych tłumaczeń łańcuchów
                   znakowych programu.

   Tablice
       Tablice są indeksowane wyrażeniem, ujętym w nawiasy kwadratowe ([  i  ]).   Jeśli  wyrażenie  jest  listą
       wyrażeń  (wyraż, wyraż ...)  to indeks tablicy jest sklejany z wartości (łańcuchowych) każdego wyrażenia,
       oddzielonych wartością zmiennej SUBSEP.  [Uwaga: jest tak dlatego, że AWK używa  tablic  asocjacyjnych  -
       tak  jakby  słownikowych  -  nie  ma  tu  normalnych  liczbowych  indeksów - indeksem może być cokolwiek,
       najczęściej łańcuch. Symulowanie tablic  wielowymiarowych  polega  właśnie  na  sklejaniu  poszczególnych
       indeksów  w  unikalny  łańcuch -- przyp.  tłum.] Właściwość ta jest używana do symulacji wielowymiarowych
       tablic. Na przykład:

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

       przypisuje łańcuch "hello, world\n" elementowi tablicy x, o  indeksie  będącym  łańcuchem  "A\034B\034C".
       Wszystkie tablice w AWK są asocjacyjne, tj. indeksowane wartościami łańcuchowymi.

       Do  sprawdzenia,  czy  dana  tablica  posiada  indeks  [łańcuchowy]  o  oczekiwanej  wartości, można użyć
       specjalnego operatora in:

              if (val in array)   print array[val]

       Jeśli tablica posiada wielokrotne indeksy, można użyć konstrukcji (i, j) in array.

       Konstrukcja in może być również użyta w pętli  for  do  iterowania  poprzez  wszystkie  elementy  tablicy
       [ponieważ  jest  ona  asocjacyjna, nie można jej iterować przez przelecenie indeksu od zera do najwyższej
       wartości - indeks może być tu przecież dowolnym łańcuchem - przyp.  tłum.]. Jednak konstrukcja (i, j)  in
       array działa tylko w testach, nie w pętlach for.

       Element  można skasować z tablicy przy użyciu polecenia delete.  Poleceniem delete można się też posłużyć
       do skasowania całej zawartości tablicy, przez podanie jej nazwy bez indeksu.

       gawk obsługuje prawdziwe tablice wielowymiarowe. Nie wymaga, aby były one „prostokątne”, jak w C lub C++.
       Więcej szczegółów pod adresem https://www.gnu.org/software/gawk/manual/html_node/Arrays.

   Przestrzenie nazw
       Gawk obsługuje uproszczoną funkcjonalność przestrzeni nazw, aby pomóc obejść ograniczenia,  wynikające  z
       tego, że wszystkie zmienne w AWK są globalne.

       Nazwa  kwalifikowalna składa się z dwóch prostych identyfikatorów połączonych podwójnym dwukropkiem (::).
       Lewa strona identyfikatora reprezentuje  przestrzeń  nazw,  a  prawa  —  jej  zmienną.  Wszystkie  proste
       (niekwalifikowalne)  nazwy  są  uważane  za  znajdujące  się  w  „bieżącej”  przestrzeni  nazw;  domyślną
       przestrzenią nazw jest awk. Jednak proste identyfikatory składające  się  jedynie  z  wielkich  liter  są
       zawsze przypisywane przestrzeni nazw awk, nawet jeśli bieżąca przestrzeń nazw jest inna.

       Można zmienić bieżącą przestrzeń nazw za pomocą dyrektywy @namespace "nazwa".

       Standardowe,  predefiniowane  nazwy  funkcji  wbudowanych nie mogą być użyte jako nazwy przestrzeni nazw.
       Nazwy dodatkowych funkcji zapewnianych przez gawk mogą być używane jako przestrzenie nazw lub jako proste
       identyfikatory   w   innych   przestrzeniach   nazw.    Więcej    szczegółów    opisano    pod    adresem
       https://www.gnu.org/software/gawk/manual/html_node/Namespaces.html#Namespaces.

   Typy zmiennych i konwersje
       Zmienne  oraz  pola  mogą być liczbami (zmiennoprzecinkowymi), łańcuchami lub jednym i drugim naraz. Mogą
       być też wyrażeniami regularnymi. Interpretacja wartości zmiennej zależy od kontekstu. Jeśli jest użyta  w
       wyrażeniu numerycznym, jest interpretowana jako liczba; jeśli jest użyta w wyrażeniu łańcuchowym, to jest
       traktowana jak łańcuch.

       Aby wymusić traktowanie zmiennej jako liczby, należy do niej dodać zero; aby wymusić traktowanie jej jako
       łańcucha, należy dokleić do niej łańcuch zerowy.

       Niezainicjowane zmienne mają wartość numeryczną zero i łańcuchową "" (zero lub pusty łańcuch).

       Podczas konwersji łańcucha na liczbę, obróbka jest dokonywana przy użyciu funkcji strtod(3).  Liczba jest
       przekształcana  na łańcuch przy użyciu wartości CONVFMT jako parametru formatującego dla sprintf(3), oraz
       wartości numerycznej jako argumentu. Jednak, nawet mimo że wszystkie liczby w AWK są  zmiennoprzecinkowe,
       wartości całkowite są zawsze konwertowane jak całkowite (integer).

       Gawk  dokonuje  porównań  w  następujący  sposób:  Jeśli  dwie  wartości są numeryczne, to są porównywane
       numerycznie. Jeśli  jedna  z  wartości  jest  numeryczna,  a  druga  łańcuchowa,  która  jest  „łańcuchem
       numerycznym”,  to  porównania są również dokonywane numerycznie.  W przeciwnym wypadku wartość numeryczna
       jest konwertowana do łańcucha i dokonywane jest porównanie  łańcuchowe.   Dwa  łańcuchy  są,  oczywiście,
       porównywane jako łańcuchy.

       Zauważ,  że  stałe  znakowe, takie jak "57" nie są łańcuchami numerycznymi - są one stałymi łańcuchowymi.
       Pojęcie „łańcuchów numerycznych” odnosi się wyłącznie do pól, wejścia getinput, FILENAME, elementów ARGV,
       ENVIRON i elementów tablicy utworzonej funkcją split() lub patsplit(), będących łańcuchami  numerycznymi.
       Podstawową  koncepcją  jest  to, że wyglądające na numeryczne dane z wejścia użytkownika, i tylko one, są
       traktowane w opisany sposób.

   Stałe ósemkowe i szesnastkowe
       W kodzie źródłowym programów AWK można korzystać ze stałych ósemkowych i szesnastkowych w stylu języka C.
       Na przykład, ósemkowa wartość 011 jest równa dziesiętnej 9, a szesnastkowa 0x11  jest  równa  dziesiętnej
       17.

   Stałe łańcuchowe
       Stałe  łańcuchowe  w  AWK  są sekwencjami znaków ujętymi w cudzysłowy (jak "wartość"). Wewnątrz łańcuchów
       rozpoznawane   są   pewne   sekwencje   specjalne,   jak   w   C.   Więcej   szczegółów    pod    adresem
       https://www.gnu.org/software/gawk/manual/html_node/Escape-Sequences.

   Stałe wyrażeń regularnych
       Stała wyrażenia regularnego jest sekwencją znaków ujętych pomiędzy ukośniki (jak /wartość/).

       Sekwencji specjalnych opisanych w podręczniku można też używać wewnątrz stałych wyrażeń regularnych (np.,
       /[ \t\f\n\r\v]/ dopasowuje białe znaki).

       Gawk  zapewnia  stałe  wyrażeń  regularnych  ze  ścisłą  kontrolą  typów. Są one zapisywane z początkowym
       symbolem @ (jak: @/wartość/). Takie zmienne  mogą  być  przypisane  do  wartości  skalarnych  (zmiennych,
       elementów  tablicy)  i  przekazywane do funkcji zdefiniowanych przez użytkownika. Przypisane w ten sposób
       zmienne mają zwykły typ wyrażenia regularnego.

WZORCE I AKCJE

       AWK jest językiem zorientowanym liniowo. Najpierw przychodzi wzorzec, a potem akcja. Instrukcje akcji  są
       zawarte  w  nawiasach  {  i }.  Pominąć można zarówno wzorzec, jak i akcję, lecz oczywiście nie obydwa te
       pola naraz. Jeśli pominięto wzorzec, to akcja jest wykonywana dla każdego z rekordów  wejścia.  Brakująca
       akcja jest z kolei równoważna akcji

              { print }

       która wypisuje cały rekord.

       Komentarze  rozpoczynają  się  znakiem  #  i  trwają aż do końca wiersza. Do oddzielania instrukcji można
       używać pustych wierszy. Zwykle instrukcja kończy się wraz z nowym wierszem, jednak nie jest to  regułą  w
       przypadku  wierszy  kończących się na przecinek, {, ?, :, && lub ||. Dla wierszy kończących się na do lub
       else również wystąpi automatyczna kontynuacja instrukcji  w  następnym  wierszu.  W  innych  przypadkach,
       wiersz  może  być kontynuowany przez zakończenie go znakiem „\”; w takim wypadku znak nowego wiersza jest
       ignorowany. Jednak „\” po znaku # nie jest traktowane w specjalny sposób.

       Wiele instrukcji można też zgrupować w jednym wierszu, oddzielając je znakiem „;”. Tyczy się  to  zarówno
       instrukcji  w  części  akcji  z  pary  wzorzec-akcja  (zwykły  przypadek),  jak  i  do  samych instrukcji
       wzorzec-akcja.

   Wzorce
       Wzorce w AWK mogą być jedną z następujących rzeczy:

              BEGIN
              END
              BEGINFILE
              ENDFILE
              /wyrażenie regularne/
              wyrażenie relacyjne
              wzorzec && wzorzec
              wzorzec || wzorzec
              wzorzec ? wzorzec : wzorzec
              (wzorzec)
              ! wzorzec
              wzorzec1, wzorzec2

       BEGIN i END są dwoma specjalnymi rodzajami wzorców, które nie są porównywane z danymi wejściowymi. Części
       akcji wszelkich wzorców BEGIN są łączone, tak jakby wszystkie one zostały napisane w  pojedynczej  regule
       BEGIN.   Są one wykonywane przed rozpoczęciem odczytywania danych wejściowych.  Podobnie, wszelkie reguły
       END są również łączone i wykonywane po wyczerpaniu danych wejściowych.  (lub  po  dojściu  do  instrukcji
       exit.)   Wzorce  BEGIN  i  END  nie mogą być łączone z innymi wzorcami w wyrażeniach wzorcowych.  Wzorcom
       BEGIN i END nie może brakować części definiującej akcję.

       BEGINFILE i ENDFILE są dodatkowymi specjalnymi wzorcami, których akcje są wykonywane, odpowiednio,  przed
       odczytaniem  pierwszego  rekordu każdego pliku wejściowego z wiersza polecenia i po odczytaniu ostatniego
       rekordu każdego pliku. Wewnątrz reguły BEGINFILE wartość ERRNO jest łańcuchem pustym, jeśli  plik  otwarł
       się  pomyślnie.  W  przeciwnym  przypadku  występuje  jakiś problem z plikiem i kod powinien skorzystać z
       nextfile, aby go pominąć. Jeśli tego nie uczyni, gawk zgłosi swój standardowy błąd krytyczny dla  plików,
       których nie da się otworzyć.

       Dla  wzorców  /wyrażeń regularnych/ powiązana instrukcja wykonywana jest dla każdego rekordu wejściowego,
       który odpowiada zadanemu wyrażeniu regularnemu. Wyrażenia regularne  są  w  gruncie  rzeczy  tymi  samymi
       wyrażeniami,  które można spotkać w egrep(1). Więcej informacji o wyrażeniach regularnych znajduje się na
       stronie https://www.gnu.org/software/gawk/manual/html_node/Regexp.html.

       wyrażenie relacyjne może używać dowolnego operatora ze zdefiniowanych  w  sekcji  o  akcjach  operatorów.
       Ogólnie, testują one, czy określone pola odpowiadają określonym wyrażeniom regularnym.

       Operatory  &&,  ||,  i  ! są logicznymi AND, OR i NOT, podobnie jak w języku C. Są one obliczane w sposób
       skrócony, podobnie jak w C, i  służą  głównie  do  łączenia  bardziej  podstawowych  wyrażeń  wzorcowych.
       Podobnie jak w większości języków, dla wymuszenia kolejności porównywania można użyć nawiasów.

       Operator  ?:  działa  podobnie  jak  ten  sam  operator w C. Jeśli pierwszy wzorzec jest prawdziwy, to do
       testowania używany jest następny wzorzec; w przeciwnym wypadku używany  jest  trzeci  wzorzec.  Obliczany
       jest tylko albo drugi albo trzeci wzorzec.

       Forma  wzorzec1,  wzorzec2  wyrażenia  jest  nazywana  wzorcem zakresu.  Dopasowuje ona wszystkie rekordy
       wejście, poczynając od rekordu,  który  odpowiada  wzorcowi1,  aż  do  rekordu  pasującego  do  wzorzec2,
       włącznie. Nie łączy się to z innymi rodzajami wyrażeń wzorcowych.

   Akcje
       Instrukcje  akcji  są zawarte w nawiasach { i }.  Instrukcje akcji składają się ze zwyczajnych instrukcji
       przypisania, warunków i instrukcji pętli, które można znaleźć w większości innych języków  programowania.
       Operatory,  instrukcje  sterującymi,  a także instrukcje wejścia/wyjścia są opracowane na podstawie tych,
       spotykanych w języku C.

   Operatory
       Operatory w AWK, w kolejności malejącego priorytetu, to

       (...)       Grupowanie

       $           Odniesienie się do pola.

       ++ --       Inkrementuj i dekrementuj. Zarówno przedrostkowe i przyrostkowe.

       ^           Potęgowanie.

       + - !       Jednoargumentowy plus, minus i logiczna negacja.

       * / %       Mnożenie, dzielenie i modulo (reszta dzielenia).

       + -         Dodawanie i odejmowanie.

       odstęp      Konkatenacja (złączenie) łańcuchów.

       |   |&      Przekierowanie wejścia/wyjścia potokiem dla getline, print i printf.

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

       ~ !~        Dopasowanie wyrażenia regularnego, wyrażenie przeciwne.

       in          Przynależność do tablicy.

       &&          Koniunkcja logiczna AND.

       ||          Alternatywa logiczna OR.

       ?:          Wyrażenie warunkowe z C. Ma ono postać wyraż1 ? wyraż2 : wyraż3. Jeśli wyraż1 jest prawdziwe,
                   to wartością wyrażenia jest wyraż2, w przeciwnym wypadku jest  nią  wyraż3.   Obliczane  jest
                   wyłącznie jedno z wyraż2 i wyraż3.

       = += -= *= /= %= ^=
                   Przypisanie.  Obsługiwane  jest  zarówno  przypisanie  absolutne  (zmienna  =  wartość) jak i
                   przypisanie operatorowe (inne formy).

   Instrukcje sterujące
       Instrukcje sterujące są następujące:

              if (warunek) instrukcja [ else instrukcja ]
              while (warunek) instrukcja
              do instrukcja while (warunek)
              for (wyraż1; wyraż2; wyraż3) instrukcja
              for (var in tablica) instrukcja
              break
              continue
              delete tablica[indeks]
              delete tablica
              exit [ wyrażenie ]
              { instrukcje }
              switch (wyrażenie) { case wartość|wyraż-regul : instrukcja ... [ default: instrukcja ]
              }

   Instrukcje I/O
       Instrukcje I/O są następujące:

       close(plik [, jak])   Zamyka otwarty plik, potok lub proces współbieżny (co-process).   Opcjonalnego  jak
                             powinno  się  używać wyłącznie do zamykania jednego końca dwukierunkowego potoku do
                             procesu współbieżnego. Musi to być wartość łańcuchowa, albo "to" albo "from".

       getline               Ustawia $0 z następnego rekordu wejściowego; ustawia NF, NR, FNR, RT.

       getline <plik         Ustawia $0 z następnego rekordu pliku; ustawia NF, RT.

       getline var           Ustawia var z następnego rekordu wejściowego; ustawia NR, FNR, RT.

       getline var <plik     Ustawia var z następnego rekordu pliku; ustawia RT.

       polecenie | getline [var]
                             Uruchamia przesyłanie potokiem wyjścia polecenia do $0 albo var, jak wyżej oraz RT.

       polecenie |& getline [var]
                             Uruchamia polecenia jako proces współbieżny, wysyłając potokiem jego wyjście do  $0
                             albo  do  var,  jak wyżej oraz RT (polecenie może być także gniazdem; zob. poniższy
                             podrozdział Specjalne Nazwy Plików).

       fflush([plik])        Opróżnia bufory związane z otwartym plikiem  wynikowym  lub  potokiem  plik.  Jeśli
                             pominięto  plik  lub  jest on łańcuchem pustym, to opróżniane są wszystkie wynikowe
                             pliki i potoki.

       next                  Kończy przetwarzanie bieżącego  rekordu  wejściowego.  Następnie  odczytywany  jest
                             kolejny  rekord  wejściowy  i  przetwarzanie  rozpoczyna  się  od pierwszego wzorca
                             programu AWK. Po osiągnięciu końca danych wejściowych, wykonywane są reguły END.

       nextfile              Kończy  przetwarzanie  bieżącego  pliku  wejściowego.  Następny  rekord   wejściowy
                             zostanie  odczytany  z  kolejnego  pliku  wejściowego.  Aktualizowane  są  wartości
                             FILENAME i ARGIND, zaś FNR jest resetowane na 1 i przetwarzanie rozpoczyna  się  od
                             pierwszego wzorca programu AWK. Po osiągnięciu końca danych wejściowych, wykonywane
                             są reguły ENDFILE i END.

       print                 Wypisuje bieżący rekord. Rekord wyjściowy zakończony jest wartością ORS.

       print lista-wyrażeń   Wypisuje  wyrażenia.  Każde  wyrażenie  jest  oddzielone  wartością OFS.  Wyjściowy
                             rekord jest kończony wartością ORS.

       print lista-wyrażeń >plik
                             Wypisuje wyrażenia do pliku.   Każde  wyrażenie  jest  rozdzielone  wartością  OFS.
                             Rekord wyjściowy jest zakończony wartością ORS.

       printf fmt, lista-wyrażeń
                             Formatuje i wypisuje/

       printf fmt, lista-wyrażeń >plik
                             Formatuje i wypisuje do pliku.

       system(cmd-line)      Wywołuje polecenie systemowe cmd-line, i zwraca jego status wyjścia.  (funkcja może
                             nie  być  dostępna  na  systemach  nie  POSIX-owych).  Pełne  informacje o statusie
                             zakończenia             są             dostępne             pod             adresem
                             https://www.gnu.org/software/gawk/manual/html_node/I_002fO-Functions.html#I_002fO-Functions.

       Dozwolone są też dodatkowe przekierowania wejścia i wyjścia dla print i printf.

       print ... >> plik
              Dokleja wyjście do pliku.

       print ... | polecenie
              Zapisuje do potoku.

       print ... |& polecenie
              Wysyła dane do procesu współbieżnego lub gniazda (zob. też podrozdział Specjalne nazwy plików).

       Funkcja  getline zwraca 1 dla powodzenia, zero dla końca pliku oraz -1 jeśli wystąpił błąd. Jeśli wartość
       errno(3) wskazuje, że operacja wejścia/wyjścia może być  ponowiona  i  ustawione  jest  PROCINFO["input",
       "RETRY"],  to  zamiast  -1  zwracane  jest  -2  i  można próbować wywoływać getline ponownie. W przypadku
       wystąpienia błędu, ERRNO ustawiane jest na łańcuch opisujący problem.

       UWAGA: Niepowodzenie otwarcia dwukierunkowego gniazda powoduje zwrócenie niekrytycznego błędu do  funkcji
       wywołującej.  Używając  potoku,  procesu  współbieżnego  lub  gniazda  do getline albo z print lub printf
       wewnątrz pętli konieczne jest użycie close() do utworzenia nowych instancji tego polecenia  lub  gniazda.
       AWK  nie  zamyka  automatycznie  potoków,  gniazd  ani  procesów współbieżnych gdy zwrócą one EOF (koniec
       pliku).

       Wersje AWK instrukcji printf oraz funkcji sprintf() są podobne do tych z C. Więcej informacji pod adresem
       https://www.gnu.org/software/gawk/manual/html_node/Printf.html.

   Specjalne nazwy plików
       Podczas przekierowań I/O przy użyciu print czy też printf do pliku, albo przy  użyciu  getline  z  pliku,
       gawk rozpoznaje wewnętrznie pewne specjalne nazwy plików. Te nazwy plików umożliwiają dostęp do otwartych
       deskryptorów  plików,  dziedziczonych  po  procesie rodzicielskim gawk'a (zazwyczaj powłoce).  Inne pliki
       specjalne zapewniają dostęp do informacji o uruchomionym procesie gawk.  Z tych specjalnych  nazw  plików
       można również korzystać w wierszu poleceń do określania plików danych.  Te nazwy to:

       -           Standardowe wejście.

       /dev/stdin  Standardowe wejście.

       /dev/stdout Standardowe wyjście.

       /dev/stderr Standardowe wyjście diagnostyczne.

       /dev/fd/n   Plik związany z otwartym deskryptorem pliku n.

       Poniższych  specjalnych  nazw  plików  można  używać  z  operatorem procesu współbieżnego |& do tworzenia
       witrualnych połączeń sieciowych TCP/IP:

       /inet/tcp/lport/rhost/rport
       /inet4/tcp/lport/rhost/rport
       /inet6/tcp/lport/rhost/rport
              Pliki dla połączenia TCP/IP na lokalnym porcie lport do zdalnej stacji  rhost  na  zdalnym  porcie
              rport.  Port  0  spowoduje,  że  to  system znajdzie port. /inet4 wymusi połączenie IPv4, a /inet6
              wymusi połączenie IPv6. Zwykłe /inet użyje domyślnej wartości systemowej (zapewne IPv4).  Używalne
              tylko z dwukierunkowym operatorem wejścia/wyjścia |&.

       /inet/udp/lport/rhost/rport
       /inet4/udp/lport/rhost/rport
       /inet6/udp/lport/rhost/rport
              Podobne, lecz używa UDP/IP zamiast TCP/IP.

   Funkcje numeryczne
       AWK ma następujące wbudowane funkcje arytmetyczne:

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

       cos(wyraż)    Zwraca cosinus z wyraż w radianach.

       exp(wyraż)    funkcja wykładnicza.

       int(wyraż)    Skraca do liczby całkowitej.

       log(wyraż)    funkcja logarytmu naturalnego.

       rand()        zwraca liczbę losową N, pomiędzy zerem a jedynką tak, że 0 ≤ N < 1.

       sin(wyraż)    Zwraca sinus z wyraż w radianach.

       sqrt(wyraż)   Zwraca pierwiastek kwadratowy wyraż.

       srand([wyraż])
                     Używa  wyraż  jako  nowego  ziarno dla generatora liczb losowych. Bez podanego wyraż, używa
                     czasu dnia. Zwraca poprzednie ziarno generatora liczb losowych.

   Funkcje łańcuchowe
       Gawk   posiada   następujące   wbudowane   funkcje   łańcuchowe;    szczegółowy    opis    pod    adresem
       https://www.gnu.org/software/gawk/manual/html_node/String-Functions.

       asort(s [, d [, jak] ]) Zwraca   liczbę   elementów   w  źródłowej  tablicy  s.  Sortuje  zawartość  s  z
                               zastosowaniem zwykłych reguł gawk do porównywania  wartości,  zastępując  indeksy
                               posortowanych  wartości  s, kolejnymi liczbami całkowitymi, począwszy od 1. Jeśli
                               podano opcjonalną tablicę docelową d, to  najpierw  s  jest  powielana  do  d,  a
                               następnie   sortowana   jest   d,  zaś  indeksy  tablicy  źródłowej  s  pozostają
                               niezmienione.  Opcjonalny  łańcuch  jak  reguluje  kierunek  i  tryb  porównania.
                               Prawidłowe         wartości         jak         opisano        pod        adresem
                               https://www.gnu.org/software/gawk/manual/html_node/String-Functions.html#String-Functions.
                               s i d mogą występować w  tej  samej  tablicy;  ma  to  sens  tylko  przy  podaniu
                               trzeciego argumentu.

       asorti(s [, d [, jak] ])
                               Zwraca  liczbę  elementów  w  źródłowej  tablicy  s.  Zachowanie jest takie jak w
                               przypadku asort() z tym wyjątkiem, że do sortowania służą indeksy tablicy, a  nie
                               jej wartości. Rezultatem jest tablica indeksowana numerycznie, której wartościami
                               są  pierwotne  indeksy.  Pierwotne  wartości  są  tracone;  z  tego powodu należy
                               zapewnić  drugą  tablicę,  jeśli  chce  się  zachować   pierwotną.   Zastosowanie
                               opcjonalnego  łańcucha jak jest takie samo jak w przypadku asort(). Również tutaj
                               s i d mogą być w tej samej tablicy; to także ma sens tylko przy podaniu trzeciego
                               argumentu.

       gensub(r, s, h [, t])   W łańcuchu docelowym t wyszukuje podłańcuchy odpowiadające wyrażeniu  regularnemu
                               r.   Jeżeli  h jest łańcuchem zaczynającym się od g lub G, to zastępuje wszystkie
                               znalezione  dopasowania  r  przez  s.   W  przeciwnym  wypadku,  h  jest   liczbą
                               wskazującą,  które  z  kolejnych  dopasowań  r  ma zostać zastąpione.  Jeżeli nie
                               podano t, to zamiast niego używane jest $0.   Wewnątrz  tekstu  zastępującego  s,
                               można  posłużyć  się  sekwencją  \n,  gdzie n jest cyfrą od 1 do 9, wskazującą na
                               tekst dopasowany przez n-te podwyrażenie w nawiasach. Sekwencja \0  oznacza  cały
                               dopasowany tekst, tak samo jak znak &.  W przeciwieństwie do sub() i gsub(), jako
                               wynik  funkcji  zwracany  jest  zmieniony łańcuch, zaś pierwotny łańcuch docelowy
                               pozostaje nie zmieniony.

       gsub(r, s [, t])        każdy podłańcuch, odpowiadający wyrażeniu regularnemu r w łańcuchu t, wymienia na
                               łańcuch s, i zwraca liczbę podmian. Jeśli nie podano  t,  używa  $0.   Znak  &  w
                               tekście  zastępującym  zostanie  zastąpiony  faktycznie  dopasowanym tekstem. Aby
                               otrzymać literalny znak & należy użyć  \&  (konieczne  jest  wpisanie  tego  jako
                               "\\&";                                                                       zob.
                               https://www.gnu.org/software/gawk/manual/html_node/Gory-Details.html#Gory-Details
                               aby zapoznać  się  z  pełniejszym  omówieniem  reguł  znaków  &  oraz  odwrotnych
                               ukośników w tekście zastępującym dla funkcji sub(), gsub() i gensub()).

       index(s, t)             Zwraca  indeks  łańcucha  t  w  łańcuchu  s  lub  zero,  gdy t jest nieobecne (co
                               implikuje, że indeksy znaków zaczynają się od jedynki).

       length([s])             Zwraca długość łańcucha s lub długość $0, jeśli nie  podano  s.  Przy  argumencie
                               będącym tablicą, length() zwraca liczbę elementów w tablicy.

       match(s, r [, a])       Zwraca pozycję w s, gdzie pojawia się wyrażenie regularne r.  Jeśli nie podano r,
                               zwracane  jest  zero. Jeśli jest jednak obecne, to dodatkowo ustawiane są zmienne
                               RSTART i RLENGTH.  Zauważ,  że  kolejność  argumentów  jest  taka  sama  jak  dla
                               operatora         ~:         str         ~         re.         Pod        adresem
                               https://www.gnu.org/software/gawk/manual/html_node/String-Functions.html#String-Functions
                               dostępny jest opis, w jaki sposób następuje zapełnianie tablicy a, jeśli  się  ją
                               poda.

       patsplit(s, a [, r [, seps] ])
                               Dzieli   łańcuch   s  na  tablicę  a  i  tablicę  separatorów  seps  w  miejscach
                               rozdzielonych wyrażeniem regularnym r, i zwraca liczbę pól. Wartościami elementów
                               są fragmenty  s,  które  zostały  dopasowane  przez  r.  Wartością  seps[i]  jest
                               separator  (być  może  null),  który  pojawił się po a[i]. Wartością seps[0] jest
                               wiodący separator (być może null). Jeśli pominięto r, zamiast niego używane  jest
                               FPAT.   Na  początku,  tablice  a  i  seps  są  czyszczone.  Podział  odbywa  się
                               identycznie podział pól przy FPAT.

       split(s, a [, r [, seps] ])
                               Dzieli  łańcuch  s  na  tablicę  a  i  tablicę  separatorów  seps,  w   miejscach
                               rozdzielonych  wyrażeniem  regularnym  r, i zwraca liczbę pól. Jeśli pominięto r,
                               zamiast niego używane jest FS. Na początku,  czyszczone  są  tablice  a  i  seps.
                               seps[i]  jest  separatorem  pola  dopasowanego  przez  r  pomiędzy a[i] i a[i+1].
                               Podział odbywa się identycznie jak opisany powyżej podział rekordu na pola.

       sprintf(fmt, lista-wyraż)
                               wypisuje listę-wyraż według fmt, i zwraca łańcuch wyjściowy.

       strtonum(str)           Bada str, i zwraca jego numeryczną wartość. Jeśli str zaczyna się od początkowego
                               0, to traktuje go jako liczbę ósemkową. Jeśli str zaczyna się od początkowego  0x
                               lub  0X, to traktuje go jako liczbę szesnastkową. W innym przypadku przyjmuje, że
                               jest to liczba dziesiętna.

       sub(r, s [, t])         Podobne do gsub(), lecz podmienia tylko pierwszy odpowiadający podłańcuch. Zwraca
                               zero albo jeden.

       substr(s, i [, n])      Zwraca maksymalnie n-znakowy podłańcuch łańcucha s, zaczynający się od pozycji i.
                               Jeśli pominięto parametr n, użyta zostaje reszta s.

       tolower(str)            Zwraca kopię łańcucha str, w której wszystkie wielkie litery  zostały  zastąpione
                               małymi.  Nie alfabetyczne znaki pozostają bez zmian.

       toupper(str)            Zwraca  kopię  łańcucha  str,  w  której wszystkie małe litery zostały zastąpione
                               wielkimi.  Nie alfabetyczne znaki pozostają bez zmian.

       Gawk jest świadomy wielobajtowości. Oznacza to, że index(), length(), substr() i match()  działają  wobec
       znaków, nie bajtów.

   Funkcje czasu
       Gawk  zapewnia  następujące  funkcje do pozyskiwania znaczników czasowych i formatowania ich. Szczegółowy
       opis pod adresem https://www.gnu.org/software/gawk/manual/html_node/Time-Functions.

       mktime(określenie-daty [, znacznik-utc])
                 Przekształca określenie-daty na znacznik czasu w tej samej postaci, jaka  jest  zwracana  przez
                 systime()  i zwraca wynik. Jeśli obecny jest znacznik-utc i jest on niezerowy i niebędący null,
                 przyjmuje się, że czas jest w strefie czasu uniwersalnego (UTC), w  innym  przypadku  przyjmuje
                 się,  że  jest  to  czas  lokalny.  Jeśli  określenie-daty nie zawiera wymaganych elementów lub
                 zwrócony czas jest poza zakresem, mktime() zwraca -1.  Szczegóły  określenia-daty  opisano  pod
                 adresem https://www.gnu.org/software/gawk/manual/html_node/Time-Functions.html#Time-Functions.

       strftime([format [, znacznik-czasu[, znacznik-utc]]])
                 formatuje  znacznik-czasu  według  wskazówek  zawartych  w  zmiennej  format. Jeśli obecny jest
                 znacznik-utc i jest on niezerowy i niebędący null, przyjmuje się, że czas jest w strefie  czasu
                 uniwersalnego  (UTC),  w innym przypadku przyjmuje się, że jest to czas lokalny. Znacznik-czasu
                 powinien  być  taki  sam,  jak  ten,  zwracany  przez  systime().   Jeśli   brakuje   parametru
                 znacznik-czasu,  używany  jest  bieżący  czas  dnia.  Jeżeli  pominięto format, to używany jest
                 domyślny format równoważny formatowi  wyników  z  date(1).  Domyślny  format  jest  dostępny  w
                 PROCINFO["strftime"].  Zobacz  specyfikację  funkcji  strftime  ()  w ISO C, aby zobaczyć jakie
                 konwersje formatów są na pewno dostępne.

       systime() Zwraca bieżący czas dnia w liczbach sekund od początku Epoki (czyli od północy UTC, 1  stycznia
                 1970 na systemach POSIX-owych).

   Funkcje operujące na bitach
       Gawk   zapewnia   poniższe   funkcje   operujące   na   bitach.   Działają   przez   konwersję   wartości
       zmiennoprzecinkowych podwójnej precyzji na całkowite uintmax_t, wykonanie operacji, a następnie konwersję
       wyniku z powrotem na zmiennoprzecinkowy. Przekazanie  ujemnych  argumentów  do  którejś  z  tych  funkcji
       spowoduje błąd krytyczny.

       Funkcje:

       and(v1, v2 [, ...]) Zwraca  bitową  koniunkcję AND wartości podanych w liście argumentów. Musi być ich co
                           najmniej dwa.

       compl(val)          Zwraca bitowe uzupełnienie val.

       lshift(val, ile)    Zwraca wartość val, przesuniętą w lewo o ile bitów.

       or(v1, v2 [, ...])  Zwraca bitową alternatywę OR wartości podanych w liście argumentów. Musi być  ich  co
                           najmniej dwa.

       rshift(val, ile)    Zwraca wartość val, przesuniętą w prawo o ile bitów.

       xor(v1, v2 [, ...]) Zwraca  bitową  alternatywę  wykluczającą  XOR wartości podanych w liście argumentów.
                           Musi być ich co najmniej dwa.

   Funkcje typu
       Następujące funkcje zapewniają informacje związane z typem ich argumentów.

       isarray(x) Zwraca prawdę, jeśli x jest tablicą lub fałsz w innym przypadku.

       typeof(x)  Zwraca łańcuch wskazujący typ  x.  Łańcuch  przyjmie  jedną  z  wartości:  "array",  "number",
                  "regexp", "string", "strnum", "unassigned", or "undefined".

   Funkcje internacjonalizacji
       Można  używać  wewnątrz  programów  AWK  funkcji  do  tłumaczenia  łańcuchów  podczas wykonania programu.
       Szczegóły                          opisano                          pod                           adresem
       https://www.gnu.org/software/gawk/manual/html_node/I18N-Functions.html#I18N-Functions.

       bindtextdomain(katalog [, domena])
              Określa  katalog,  w  którym  gawk  szuka  plików  .gmo, w przypadku gdy nie będą lub nie mogą być
              umieszczone w „standardowych” miejscach. Zwraca katalog, z którym jest „związana” domena.
              Domyślną  domeną  jest  wartość  TEXTDOMAIN.   Jeśli  katalog  jest  łańcuchem  pustym  (""),   to
              bindtextdomain() zwraca bieżące wiązanie dla zadanej domeny.

       dcgettext(łańcuch [, domena [, kategoria]])
              Zwraca  tłumaczenie  łańcucha w domenie tekstowej domena dla kategorii locale kategoria.  Domyślną
              domeną jest bieżąca wartość TEXTDOMAIN.  Domyślną wartością kategorii jest "LC_MESSAGES".

       dcngettext(łańcuch1, łańcuch2, liczba [, domena [, kategoria]])
              Zwraca formę mnogą używaną dla tłumaczenia liczby łańcucha1 i łańcucha2 w domenie tekstowej domena
              dla kategorii  locale  kategoria.  Domyślną  domeną  jest  bieżąca  wartość  TEXTDOMAIN.  Domyślną
              wartością kategorii jest "LC_MESSAGES".

   Funkcje z wartościami logicznymi
       Można  tworzyć  specjalne  wartości  typu  logicznego;  więcej  informacji  o  działaniu i przyczynie ich
       istnienia opisano w podręczniku.

       mkbool(wyrażenie)
              W zależności od wartości logicznej wyrażenia, zwraca wartość prawdy lub  wartość  fałszu.  Wartość
              prawdy ma wartość numeryczną jeden. Wartość fałszu ma wartość numeryczną zero.

FUNKCJE UŻYTKOWNIKA

       Funkcje w AWK są definiowane następująco:

              function nazwa(lista parametrów) { instrukcje }

       Funkcje  są  wykonywane  po  wywołaniu  ich z wyrażeń występujących we wzorcach lub akcjach. Do tworzenia
       instancji parametrów formalnych, zadeklarowanych  w  funkcji  używane  są  parametry  faktyczne  użyte  w
       wywołaniu funkcji.  Tablice są przekazywane przez wskazanie, inne zmienne przez wartość.

       Zmienne  lokalne  są  deklarowane  jako  dodatkowe  parametry  w  liście  parametrów. Konwencja polega na
       separowaniu zmiennych lokalnych od parametrów dodatkowymi spacjami w liście parametrów. Na przykład:

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

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

       Lewy nawias w wywołaniu funkcji musi występować bezpośrednio za nazwą funkcji,  bez  wtrąconego  odstępu.
       Ograniczenie to nie odnosi się do funkcji wbudowanych, które są opisane powyżej.

       Funkcje  mogą  wołać  siebie  nawzajem  i  mogą być rekurencyjne.  Parametry funkcji używane jako zmienne
       lokalne są podczas wywołania funkcji inicjalizowane na łańcuch pusty i liczbę zero.   Chcąc,  by  funkcja
       zwracała  wartość  należy  posłużyć  się  składnią:  return  wyraż.   Wartość zwracana przez funkcję jest
       niezdefiniowana jeśli nie podano wartości zwracanej  lub  funkcja  kończy  pracę  bez  jawnej  instrukcji
       powrotu.

       Jeżeli  użyto --lint, to gawk ostrzega o wywołaniach niezdefiniowanych funkcji podczas analizy składni, a
       nie w czasie wykonania.  Wywołanie niezdefiniowanej funkcji w czasie wykonania powoduje błąd krytyczny.

       Funkcje można wywoływać niebezpośrednio. W  tym  celu  należy  przypisać  nazwę  funkcji,  która  ma  być
       wywołana, jako łańcuch, do zmiennej. Następnie zmienną można podać jakby była nazwą funkcji, poprzedzając
       ją znakiem @, jak w przykładzie:
              function mojafunkcja() {      print "wywołano mojafunkcja"  ... }

              {    ...  ta_funkcja = "mojafunkcja"    @ta_funkcja()  # wywołanie mojafunkcja poprzez ta_funkcja   ... }

       Jeżeli  użyto --lint, to gawk ostrzega o wywołaniach niezdefiniowanych funkcji podczas analizy składni, a
       nie w czasie wykonania.  Wywołanie niezdefiniowanej funkcji w czasie wykonania powoduje błąd krytyczny.

DYNAMICZNE ŁADOWANIE NOWYCH FUNKCJI

       Można dynamicznie dodawać nowe funkcje napisane w C lub C++ do pracującego interpretera  gawk  instrukcją
       @load.     Dokładne    szczegóły    wykraczają    poza    zakres    tej    strony    podręcznika;    zob.
       https://www.gnu.org/software/gawk/manual/html_node/Dynamic-Extensions.html#Dynamic-Extensions.

SYGNAŁY

       Profiler gawk przyjmuje dwa sygnały. SIGUSR1 powoduje, że zrzuca on profil  i  stos  wywołań  funkcji  do
       pliku  profilu,  którym  jest albo awkprof.out, albo plik podany z opcją --profile.  Następnie kontynuuje
       działanie.  SIGHUP powoduje, że gawk zrzuca profil i stos wywołań funkcji a następnie kończy pracę.

INTERNACJONALIZACJA

       Stałe łańcuchowe są ciągami znaków ujętymi w cudzysłowy. W  środowiskach  innych  niż  angielskojęzyczne,
       możliwe  jest  oznakowanie  łańcuchów  w  programie  AWK  jako  wymagających  tłumaczenia na własny język
       narodowy. Łańcuchy takie są oznaczone w programie AWK  przez  początkowy  znak  podkreślenia  („_”).   Na
       przykład,

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

       zawsze wypisuje hello, world.  Ale,

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

       może  wypisać  bonjour,  monde  we  Francji. Więcej informacji na temat kroków potrzebnych do tworzenia i
       działania,      dającego      się      tłumaczyć      programu      K,      opisano      pod      adresem
       https://www.gnu.org/software/gawk/manual/html_node/Internationalization.html#Internationalization.

ROZSZERZENIA GNU

       Gawk    ma    zbyt    wiele    rozszerzeń    do    POSIX    awk.    Są    one    opisane    pod   adresem
       https://www.gnu.org/software/gawk/manual/html_node/POSIX_002fGNU.html.   Wszystkie   rozszerzenia   można
       wyłączyć, wywołując gawk z opcją --traditional lub --posix.

ZMIENNE ŚRODOWISKOWE

       Do  podania  listy  katalogów  przeglądanych  przez gawk podczas poszukiwania plików zadanych opcjami -f,
       --file, -i i --include oraz dyrektywą @include można posłużyć się  zmienną  środowiskową  AWKPATH.  Jeśli
       pierwotne  wyszukiwanie  nie  powiedzie  się,  ścieżka jest przeszukiwana ponownie, z dołączonym do nazwy
       pliku .awk.

       Do podania listy katalogów przeglądanych przez gawk podczas poszukiwania plików  zadanych  opcjami  -l  i
       --load można posłużyć się zmienną środowiskową AWKLIBPATH.

       Zmienna  środowiskowa GAWK_PERSIST_FILE, jeśli obecna, wskazuje na plik, który służy jako magazyn pamięci
       trwałej. Więcej szczegółów w GAWK: Efektywne programowanie w AWK.

       Zmienna  środowiskowa  GAWK_READ_TIMEOUT  może  posłużyć  do   określenia   czasu   przeterminowania,   w
       milisekundach,  na  oczekiwanie na wejście na terminalu, w potoku lub przez komunikację dwustronną, w tym
       gniazda.

       W przypadku połączeń do stacji zdalnej za pomocą gniazda,  GAWK_SOCK_RETRIES  reguluje  liczbę  ponownych
       prób,  a  GAWK_MSEC_SLEEP  interwał  między  nimi.  Interwał  określa  się  w  milisekundach. W systemach
       nieobsługujących usleep(3), wartość jest zaokrąglana w górę, do pełnych sekund.

       Jeśli w środowisku istnieje zmienna POSIXLY_CORRECT to gawk zachowuje się tak, jakby podano mu w  wierszu
       poleceń opcję --posix.  Jeśli podano opcję --lint, gawk wyda ostrzeżenie o tym efekcie.

STATUS ZAKOŃCZENIA

       Jeśli instrukcja exit zostanie użyta z wartością, to gawk wychodzi z podaną w niej wartością numeryczną.

       W  pozostałych  przypadkach,  jeśli  przy  wykonaniu nie napotkano na problemy, gawk wychodzi z wartością
       stałej C EXIT_SUCCESS. Zwykle wynosi zero.

       Jeśli wystąpi błąd, gawk wychodzi z wartością stałej C EXIT_FAILURE. Zwykle wynosi jeden.

       Jeśli gawk wyjdzie z powodu błędu krytycznego, status zakończenia wynosi 2. W systemach innych niż POSIX,
       wartość tę można przypisać do EXIT_FAILURE.

INFORMACJA O WERSJI

       Ta strona podręcznika man opisuje gawk, w wersji numer 5.3.

AUTORZY

       Oryginalna wersja UNIX awk była opracowana i zaimplementowana przez Alfreda  Aho,  Petera  Weinbergera  i
       Briana  Kernighana  z  Bell  Laboratories.  Aktualnym  opiekunem  jest  Ozan Yigit. Brian Kernighan wciąż
       okazjonalnie rozwija program.

       Paul Rubin i Jay Fenlason, z Free Software Foundation, napisali wersję gawk, zgodną z  oryginalną  wersją
       awk,  rozprowadzaną  w  Seventh  Edition  UNIX.   John Woods wprowadził wiele poprawek.  David Trueman, z
       pomocą Arnolda Robbinsa, uczynił gawk zgodnym z nową wersją  UNIX  awk.   Arnold  Robbins  jest  bieżącym
       opiekunem projektu.

       Pełna  lista  twórców  gawk  jest  dostępna  w  dokumentacji  programu oraz w podręczniku GAWK: Efektywne
       programowanie w AWK.

       Plik README w dystrybucji gawk zawiera  aktualne  informacje  o  opiekunach  oraz  obecnie  obsługiwanych
       portach.

ZGŁOSZENIA BŁĘDÓW I ZAPYTANIA

       Po napotkaniu błędu w gawk, proszę skorzystać z programu gawkbug(1), aby go zgłosić.

       Pełna        instrukcja        zgłaszania        błędów       jest       dostępna       pod       adresem
       https://www.gnu.org/software/gawk/manual/html_node/Bugs.html.  Prosimy o uważne przeczytanie i stosowanie
       się do niej. Czyni to zgłaszanie i poprawianie błędów znacznie łatwiejsze  dla  wszystkich  zaangażowany.
       Naprawdę!

       Z drugiej strony, jeśli ma się pytanie o to, jak wykonać dane zadanie używając awk lub gawk, można wysłać
       wiadomość na adres help-gawk@gnu.org z prośbą o pomoc.

USTERKI

       Opcja -F niekoniecznie ma właściwość przypisywania zmiennych; pozostaje tylko dla zgodności wstecznej.

       Niniejszy podręcznik systemowy jest zbyt obszerny, gawk ma zbyt wiele funkcji.

ZOBACZ TAKŻE

       egrep(1), sed(1), gawkbug(1), printf(3), and strftime(3).

       The  AWK  Programming  Language,  wydanie drugie, Alfred V. Aho, Brian W. Kernighan, Peter J. Weinberger,
       Addison-Wesley, 2023. ISBN 9-780138-269722.

       GAWK: Efektywne programowanie w AWK, Wydanie 5.3, dostarczane ze źródłami  gawk  source.  Bieżąca  wersja
       tego dokumentu jest dostępna pod adresem https://www.gnu.org/software/gawk/manual.

       Dokumentacja GNU gettext, dostępna pod adresem https://www.gnu.org/software/gettext.

PRZYKŁADY

       Wypisz i posortuj nazwy zgłoszeniowe (login) wszystkich użytkowników:

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

       Zlicz wiersze w pliku:

                 { nlines++ }   END  { print nlines }

       Poprzedź każdy wiersz jego numerem w pliku:

            { print FNR, $0 }

       Łącz i numeruj wiersze (wariacja tematu):

            { print NR, $0 }

       Uruchom zewnętrzne polecenie dla określonych wierszy danych:

            tail -f access_log |     awk '/myhome.html/ { system("nmap " $1 ">> logdir/myhome.html") }'

KOPIOWANIE NINIEJSZEJ DOKUMENTACJI

       Copyright  ©  1989,  1991,  1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2001, 2002, 2003, 2004, 2005,
       2007, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020,  2021,  2022,  2023,  2024,
       2025 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.

TŁUMACZENIE

       Tłumaczenie   niniejszej   strony  podręcznika:  Przemek  Borys  <pborys@dione.ids.pl>  i  Michał  Kułach
       <michal.kulach@gmail.com>

       Niniejsze tłumaczenie jest wolną dokumentacją. Bliższe informacje  o  warunkach  licencji  można  uzyskać
       zapoznając   się   z   GNU General Public License w wersji 3   lub  nowszej.  Nie  przyjmuje  się  ŻADNEJ
       ODPOWIEDZIALNOŚCI.

       Błędy w  tłumaczeniu  strony  podręcznika  prosimy  zgłaszać  na  adres  listy  dyskusyjnej  manpages-pl-
       list@lists.sourceforge.net.

Free Software Foundation                        23 marca 2025 r.                                         GAWK(1)