Angielskifrancuskihiszpański

Ad


Ulubiona usługa OnWorks

gawk - Online w chmurze

Uruchom gawk u dostawcy bezpłatnego hostingu OnWorks przez Ubuntu Online, Fedora Online, emulator online Windows lub emulator online MAC OS

Jest to polecenie gawk, które można uruchomić u dostawcy bezpłatnego hostingu OnWorks przy użyciu jednej z naszych wielu bezpłatnych internetowych stacji roboczych, takich jak Ubuntu Online, Fedora Online, emulator online Windows lub emulator online MAC OS

PROGRAM:

IMIĘ


gawk - język skanowania i przetwarzania wzorców

STRESZCZENIE


gapić się [ Opcje stylu POSIX lub GNU ] -f plik programu [ -- ] plik ...
gapić się [ Opcje stylu POSIX lub GNU ] [ -- ] program-tekst plik ...

OPIS


Gapić się jest implementacją języka programowania AWK Projektu GNU. Jest zgodny z
definicja języka w standardzie POSIX 1003.1. Ta wersja z kolei jest
na podstawie opisu w Połączenia AWK Programowanie Wybierz język, autorstwa Aho, Kernighana i
Weinbergera. Gapić się zapewnia dodatkowe funkcje znalezione w aktualnej wersji Brian
Kernighana Awk oraz szereg rozszerzeń specyficznych dla GNU.

Linia poleceń składa się z opcji do gapić się sam tekst programu AWK (jeśli nie został dostarczony)
za pośrednictwem -f or --plik opcji) oraz wartości, które mają być udostępnione w ARGC i ARGV przed-
zdefiniowane zmienne AWK.

Kiedy gapić się jest wywoływany z --profil opcja, zaczyna zbierać statystyki profilowania
od wykonania programu. Gapić się działa wolniej w tym trybie i automatycznie
tworzy profil wykonania w pliku awkprof.out po zakończeniu. Zobacz --profil
opcja poniżej.

Gapić się posiada również zintegrowany debugger. Interaktywną sesję debugowania można rozpocząć przez
dostarczanie --odpluskwić opcję w wierszu poleceń. W tym trybie realizacji gapić się masa
kod źródłowy AWK, a następnie monituje o polecenia debugowania. Gapić się może debugować tylko AWK
źródło programu dostarczane z -f opcja. Debuger jest udokumentowany w GAPIĆ SIĘ: Efektywne
AWK Programowanie.

OPCJA FORMAT


Gapić się opcje mogą być tradycyjnymi opcjami jednoliterowymi w stylu POSIX lub długimi w stylu GNU
opcje. Opcje POSIX zaczynają się od pojedynczego „-”, a długie opcje zaczynają się od „--”. Długie
dostępne są opcje zarówno dla funkcji specyficznych dla GNU, jak i dla funkcji wymaganych przez POSIX.

Gapić się-specyficzne opcje są zwykle używane w formie długich opcji. Argumenty za długimi opcjami
są połączone z opcją przez = znak, bez spacji, w przeciwnym razie mogą być
podane w następnym argumencie wiersza poleceń. Długie opcje mogą być skracane, o ile
skrót pozostaje unikalny.

Dodatkowo, każda długa opcja ma odpowiadającą krótką opcję, dzięki czemu opcja
funkcjonalność może być używana od wewnątrz #! wykonywalne skrypty.

OPCJE


Gapić się akceptuje następujące opcje. Opcje standardowe są wymienione jako pierwsze, a następnie
opcje dla gapić się rozszerzenia, wymienione alfabetycznie według skrótów.

-f plik programu
--plik plik programu
Odczytaj źródło programu AWK z pliku plik programu, zamiast od pierwszego
argument wiersza poleceń. Wiele -f (lub --plik) można użyć opcji.

-F fs
--separator pól fs
Zastosowanie fs dla separatora pola wejściowego (wartość FS predefiniowana zmienna).

-v było=val
--przydzielać było=val
Przypisz wartość val do zmiennej było, przed rozpoczęciem wykonywania programu.
Takie wartości zmiennych są dostępne dla ZACZYNAĆ reguła programu AWK.

-b
--znaki-jako-bajty
Traktuj wszystkie dane wejściowe jako znaki jednobajtowe. Innymi słowy, nie płać żadnych
zwracanie uwagi na informacje o lokalizacji podczas próby przetwarzania ciągów jako wielobajtowych
postacie. Plik --posiks opcja zastępuje tę.

-c
--tradycyjny
Wbiec zgodność tryb. W trybie zgodności, gapić się zachowuje się identycznie jak
U Briana Kernighana Awk; żadne z rozszerzeń specyficznych dla GNU nie jest rozpoznawane. Widzieć GNU
ROZSZERZENIA, poniżej, aby uzyskać więcej informacji.

-C
--prawa autorskie
Wydrukuj skróconą wersję wiadomości z informacjami o prawach autorskich GNU na standardzie
wyjście i wyjście pomyślnie.

-d[filet]
--dump-zmienne[=filet]
Wydrukuj posortowaną listę zmiennych globalnych, ich typy i końcowe wartości do filet. Jeśli
Nie filet jest zapewniony, gapić się używa pliku o nazwie awkvars.out w bieżącym katalogu.
Posiadanie listy wszystkich zmiennych globalnych to dobry sposób na szukanie typograficznych
błędy w twoich programach. Możesz również użyć tej opcji, jeśli masz duży
program z wieloma funkcjami i chcesz mieć pewność, że Twoje funkcje nie
nieumyślnie użyj zmiennych globalnych, które miały być lokalne. (To jest
szczególnie łatwy błąd do popełnienia przy prostych nazwach zmiennych, takich jak i, j, i tak dalej.)

-D[filet]
--odpluskwić[=filet]
Włącz debugowanie programów AWK. Debuger domyślnie odczytuje polecenia
interaktywnie z klawiatury (standardowe wejście). Opcjonalne filet argument
określa plik z listą poleceń dla debugera do wykonania nie-
interaktywnie.

-e program-tekst
--źródło program-tekst
Zastosowanie program-tekst jako kod źródłowy programu AWK. Ta opcja pozwala na łatwe
przemieszanie funkcji bibliotecznych (używane przez -f i --plik opcje) ze źródłem
kod wprowadzony w wierszu poleceń. Przeznaczony jest przede wszystkim do średnich i dużych AWK
programy używane w skryptach powłoki.

-E filet
--wykon filet
Podobny do -f, jednak jest to ostatnia przetworzona opcja. To powinno być
używane z #! skrypty, szczególnie dla aplikacji CGI, aby uniknąć przekazywania
opcje lub kod źródłowy (!) w wierszu poleceń z adresu URL. Ta opcja wyłącza
przypisania zmiennych wiersza polecenia.

-g
--gen-pot
Zeskanuj i przeanalizuj program AWK i wygeneruj GNU .garnek (Szablon obiektów przenośnych)
formatowanie pliku na standardowym wyjściu z wpisami dla wszystkich możliwych do zlokalizowania ciągów w
program. Sam program nie jest wykonywany. Zobacz GNU gettext dystrybucja dla
więcej informacji na temat .garnek akta.

-h
--help Wydrukuj stosunkowo krótkie podsumowanie dostępnych opcji na standardowym wyjściu.
(Zgodnie z GNU Kodowanie Wzorce, te opcje powodują natychmiastowe, pomyślne zakończenie).

-i plik-włączania
--włączać plik-włączania
Załaduj bibliotekę źródłową awk. Spowoduje to wyszukanie biblioteki za pomocą ŚCIEŻKA AWK
Zmienna środowiskowa. Jeśli początkowe wyszukiwanie się nie powiedzie, zostanie podjęta kolejna próba
po dołączeniu awk przyrostek. Plik zostanie załadowany tylko raz (tj.
duplikaty są eliminowane), a kod nie stanowi programu głównego
źródło.

-l lib
--Załaduj lib
Załaduj bibliotekę udostępnioną lib. Spowoduje to wyszukanie biblioteki za pomocą ŚCIEŻKA AWKLIB
Zmienna środowiskowa. Jeśli początkowe wyszukiwanie się nie powiedzie, zostanie podjęta kolejna próba
po dołączeniu domyślnego przyrostka biblioteki współdzielonej dla platformy. Biblioteka
oczekuje się, że procedura inicjalizacji zostanie nazwana dl_load().

-L [wartość]
--szarpie[=wartość]
Podaj ostrzeżenia o konstrukcjach, które są wątpliwe lub nieprzenośne do innych AWK
wdrożenia. Z opcjonalnym argumentem fatalny, ostrzeżenia o szarpie stają się fatalne
błędy. Może to być drastyczne, ale jego użycie z pewnością zachęci do rozwoju
czystszych programów AWK. Z opcjonalnym argumentem nieważny, tylko ostrzeżenia o
rzeczy, które są faktycznie nieważne, są wydawane. (To nie jest jeszcze w pełni zaimplementowane.)

-M
--bignum
Wymuś arytmetykę o dowolnej precyzji na liczbach. Ta opcja nie działa, jeśli gapić się
nie jest skompilowany do korzystania z bibliotek GNU MPFR i MP.

-n
--nie-dziesiętne-dane
Rozpoznaj wartości ósemkowe i szesnastkowe w danych wejściowych. Zastosowanie to opcja w wspaniały
Uwaga!

-N
--use-lc-numeric
To wymusza gapić się aby użyć znaku przecinka dziesiętnego w ustawieniach regionalnych podczas analizowania danych wejściowych
dane. Chociaż standard POSIX wymaga tego zachowania, i gapić się robi to kiedy
--posiks obowiązuje, domyślnie postępuje się zgodnie z tradycyjnym zachowaniem i używa a
kropka jako kropka dziesiętna, nawet w lokalizacjach, w których kropka nie jest kropką dziesiętną
charakter punktowy. Ta opcja zastępuje domyślne zachowanie, bez pełnego
drakońska surowość --posiks opcja.

-o[filet]
--ładny-druk[=filet]
Wyślij ładnie wydrukowaną wersję programu do filet, Jeśli nie filet jest zapewniony,
gapić się używa pliku o nazwie awkprof.out w bieżącym katalogu.

-O
--optymalizować
Włącz optymalizacje na wewnętrznej reprezentacji programu. W tej chwili,
obejmuje to proste składanie na stałe i eliminację ogona w przypadku rekurencji
Funkcje. The gapić się Opiekun ma nadzieję, że z czasem doda dodatkowe optymalizacje.

-p[prof-plik]
--profil[=prof-plik]
Rozpocznij sesję profilowania i wyślij dane profilowania do prof-plik. Domyślny
is awkprof.out. Profil zawiera liczniki wykonania każdego wyciągu w
program na lewym marginesie i liczniki wywołań funkcji dla każdej funkcji zdefiniowanej przez użytkownika.

-P
--posiks
To się włącza zgodność tryb, z następującymi dodatkowymi ograniczeniami:

· \x sekwencje specjalne nie są rozpoznawane.

· Tylko spacja i tabulator działają jako separatory pól, gdy FS jest ustawiony na pojedynczą spację,
nowa linia nie.

· Nie możesz kontynuować linii po ? i :.

· Synonim funkcjonować dla słowa kluczowego funkcjonować jest nie rozpoznany.

· Operatorzy ** i ** = nie może być używany zamiast ^ i ^=.

-r
--re-interwał
Włącz korzystanie z interwał wyrażeń w dopasowywaniu wyrażeń regularnych (patrz Regularna
Expressions, poniżej). Wyrażenia interwałowe nie były tradycyjnie dostępne w
Język AWK. Standard POSIX dodał je, aby Awk i egrep zgodne z
wzajemnie. Są one domyślnie włączone, ale ta opcja pozostaje do użytku z
--tradycyjny.

-S
--piaskownica
Działa gapić się w trybie piaskownicy, wyłączając system() funkcja, przekierowanie wejścia z
pobierz linię, przekierowanie wyjścia z i printfi wczytuję rozszerzenia dynamiczne.
Wykonywanie poleceń (przez potoki) jest również wyłączone. To skutecznie blokuje
skrypt przed dostępem do lokalnych zasobów (z wyjątkiem plików określonych w
wiersz poleceń).

-t
--strzępiony-stary
Podaj ostrzeżenia o konstrukcjach, których nie można przenieść do oryginalnej wersji
UNIX Awk.

-V
--wersja
Informacje o wersji do druku dla tej konkretnej kopii gapić się na standardowym wyjściu.
Jest to przydatne głównie do sprawdzenia, czy aktualna kopia gapić się w twoim systemie działa
do tej pory w odniesieniu do tego, co rozpowszechnia Free Software Foundation.
Jest to również przydatne przy zgłaszaniu błędów. (Zgodnie z GNU Kodowanie Wzorcete
opcje powodują natychmiastowe, pomyślne zakończenie.)

-- Zasygnalizuj koniec opcji. Jest to przydatne, aby umożliwić dalsze argumenty AWK
program, aby zaczynał się od „-”. Zapewnia to spójność z argumentacją
konwencja parsowania używana przez większość innych programów POSIX.

W trybie zgodności wszystkie inne opcje są oznaczane jako nieprawidłowe, ale są poza tym
ignorowane. Podczas normalnej pracy, o ile dostarczono tekst programu, nieznane opcje
są przekazywane do programu AWK w ARGV tablica do przetwarzania. Jest to szczególnie
przydatne do uruchamiania programów AWK za pomocą „#!” wykonywalny mechanizm tłumacza.

Dla zgodności z POSIX, -W można użyć opcji, po której następuje nazwa długiej opcji.

AWK PROGRAM WYKONANIE


Program AWK składa się z sekwencji instrukcji wzorzec-akcja i opcjonalnej funkcji
definicje.

@włączać "filename"
@Załaduj "filename"
wzorzec { akcja oświadczenia }
funkcjonować Nazwa(parametr podstęp) { oświadczenia }

Gapić się najpierw odczytuje źródło programu z plik programu(s) jeśli określono, z argumentów
do --źródło, lub z pierwszego argumentu nie będącego opcją w wierszu polecenia. ten -f i
--źródło opcje mogą być użyte wielokrotnie w wierszu poleceń. Gapić się czyta program
tekst tak, jakby wszystkie plik programus i teksty źródłowe wiersza poleceń zostały połączone
razem. Jest to przydatne do budowania bibliotek funkcji AWK, bez konieczności
dołącz je do każdego nowego programu AWK, który ich używa. Zapewnia również możliwość mieszania
funkcje biblioteczne z programami wiersza poleceń.

Ponadto linie zaczynające się od @włączać może być używany do dołączania innych plików źródłowych do
Twój program, czyniąc korzystanie z biblioteki jeszcze łatwiejszym. Jest to równoznaczne z użyciem -i opcja.

Linie zaczynające się od @Załaduj może być użyty do załadowania bibliotek współdzielonych do twojego programu. Ten
jest równoznaczne z użyciem -l opcja.

Zmienna środowiskowa ŚCIEŻKA AWK określa ścieżkę wyszukiwania do użycia podczas wyszukiwania plików źródłowych
nazwany z -f i -i opcje. Jeśli ta zmienna nie istnieje, domyślna ścieżka to
„.:/usr/lokalny/udostępnianie/awk”. (Rzeczywisty katalog może się różnić w zależności od tego, w jaki sposób) gapić się była
zbudowany i zainstalowany.) Jeśli nazwa pliku nadana -f opcja zawiera znak „/”, no
wykonywane jest wyszukiwanie ścieżki.

Zmienna środowiskowa ŚCIEŻKA AWKLIB określa ścieżkę wyszukiwania do użycia podczas wyszukiwania źródła
pliki o nazwie -l opcja. Jeśli ta zmienna nie istnieje, domyślna ścieżka to
„/usr/lokalny/lib/gawk”. (Rzeczywisty katalog może się różnić w zależności od tego, w jaki sposób) gapić się był zbudowany
i zainstalowany.)

Gapić się wykonuje programy AWK w następującej kolejności. Po pierwsze, wszystkie przypisania zmiennych
określone przez -v opcje są wykonywane. Następny, gapić się kompiluje program w
formularz wewnętrzny. Następnie, gapić się wykonuje kod w ZACZYNAĆ reguły (jeśli istnieją), a następnie
przechodzi do czytania każdego pliku wymienionego w ARGV tablica (do ARGV[ARGC]). Jeśli nie ma
pliki nazwane w wierszu poleceń, gapić się odczytuje standardowe wejście.

Jeśli nazwa pliku w wierszu poleceń ma postać było=val jest traktowana jako zmienna
zadanie. Zmienna było zostanie przypisana wartość val. (Dzieje się to po dowolnym
ZACZYNAĆ reguła(e) została uruchomiona.) Przypisanie zmiennych w wierszu poleceń jest najbardziej przydatne w przypadku
dynamiczne przypisywanie wartości do zmiennych używanych przez AWK do sterowania podziałem danych wejściowych
pola i rekordy. Przydaje się również do kontrolowania stanu, jeśli potrzebne są wielokrotne przejścia
w jednym pliku danych.

Jeśli wartość danego elementu ARGV jest pusty (""), gapić się przeskakuje to.

Dla każdego pliku wejściowego, jeśli a POCZĄTEK zasada istnieje, gapić się wykonuje powiązany kod przed
przetwarzanie zawartości pliku. Podobnie, gapić się wykonuje kod związany z
PLIK KOŃCOWY po przetworzeniu pliku.

Dla każdego rekordu na wejściu, gapić się testy, aby sprawdzić, czy pasuje do żadnego wzorzec w AWK
program. Dla każdego wzorca, który pasuje do rekordu, gapić się wykonuje powiązane akcja.
Wzorce są testowane w kolejności, w jakiej występują w programie.

Wreszcie, po wyczerpaniu wszystkich danych wejściowych, gapić się wykonuje kod w KONIEC reguła(-y) (jeśli
każdy).

Command Linia Katalogi
Zgodnie z POSIX, pliki o nazwach Awk wiersz poleceń musi być plikami tekstowymi. Zachowanie
jest "nieokreślone", jeśli nie są. Większość wersji Awk traktuj katalog w poleceniu
wiersz jako błąd krytyczny.

Począwszy od wersji 4.0 gapić się, katalog w wierszu poleceń wyświetla ostrzeżenie, ale
w przeciwnym razie jest pomijany. Jeśli któryś z --posiks or --tradycyjny podano opcje, to
gapić się powraca do traktowania katalogów w wierszu poleceń jako błędu krytycznego.

ZMIENNE, DOKUMENTACJA ROLNICZE POLA


Zmienne AWK są dynamiczne; powstają, gdy są używane po raz pierwszy. Ich
wartości są albo liczbami zmiennoprzecinkowymi, albo ciągami, albo obydwoma, w zależności od tego, jak są
używany. AWK posiada również tablice jednowymiarowe; tablice o wielu wymiarach mogą być
symulowane. Gapić się zapewnia prawdziwe tablice tablic; zobaczyć Tablice, poniżej. Kilka predefiniowanych
zmienne są ustawiane podczas uruchamiania programu; są one opisane w razie potrzeby i podsumowane poniżej.

Dokumentacja
Zwykle rekordy są oddzielone znakami nowej linii. Możesz kontrolować, jak rekordy są
oddzielone przez przypisanie wartości do zmiennej wbudowanej RS. Jeśli RS to dowolna pojedyncza postać,
ten znak oddziela rekordy. W przeciwnym razie, RS jest wyrażeniem regularnym. Tekst w
dane wejściowe, które pasują do tego wyrażenia regularnego, oddzielają rekord. Jednak w
tryb zgodności, tylko pierwszy znak jego wartości ciągu jest używany do oddzielania
dokumentacja. Gdyby RS jest ustawiony na łańcuch pusty, a następnie rekordy są oddzielane pustymi wierszami.
Kiedy RS jest ustawiony na łańcuch pusty, znak nowej linii zawsze pełni rolę separatora pól,
oprócz jakiejkolwiek wartości FS może mieć.

Łąka
Gdy każdy rekord wejściowy jest odczytywany, gapić się dzieli rekord na Pola, używając wartości
FS zmienna jako separator pól. Jeśli FS jest pojedynczym znakiem, pola są oddzielone
ten znak. Jeśli FS jest łańcuchem pustym, to każdy pojedynczy znak staje się a
oddzielne pole. W przeciwnym razie, FS oczekuje się, że będzie pełnym wyrażeniem regularnym. w
specjalny przypadek, który FS jest pojedynczą spacją, pola są oddzielone ciągami spacji i/lub tabulatorami
i/lub nowe linie. (Ale zobacz sekcję POSIX ZGODNOŚĆ, poniżej). UWAGA: Wartość
IGNORUJ PRZYPADEK (patrz poniżej) wpływa również na sposób dzielenia pól, gdy FS jest wyrażeniem regularnym,
i jak rekordy są rozdzielane, kiedy RS jest wyrażeniem regularnym.

Jeśli SZEROKOŚĆ POLA zmienna jest ustawiona na listę liczb oddzielonych spacjami, każde pole jest
oczekuje się, że będzie miał stałą szerokość, i gapić się dzieli rekord przy użyciu określonych szerokości.
Wartość FS jest ignorowane. Przypisanie nowej wartości do FS or FPAT zastępuje użycie
SZEROKOŚĆ POLA.

Podobnie, jeśli FPAT zmienna jest ustawiana na łańcuch reprezentujący wyrażenie regularne, każdy
pole składa się z tekstu, który pasuje do tego wyrażenia regularnego. W tym przypadku zwykły
wyrażenie opisuje same pola, zamiast tekstu oddzielającego pola.
Przypisanie nowej wartości do FS or SZEROKOŚĆ POLA zastępuje użycie FPAT.

Do każdego pola w rekordzie wejściowym można się odwoływać poprzez swoją pozycję: $1, $2I tak dalej. $0
to cały rekord. Pola nie muszą odwoływać się do stałych:

n = 5
$n

drukuje piąte pole w rekordzie wejściowym.

Zmienna NF jest ustawiona na łączną liczbę pól w rekordzie wejściowym.

Odniesienia do nieistniejących pól (tj. pól po $NF) wygeneruj ciąg zerowy.
Jednak przypisanie do nieistniejącego pola (np. $(NF+2) = 5) zwiększa wartość NF,
tworzy dowolne pola pośredniczące z łańcuchem pustym jako wartościami i powoduje, że wartość
of $0 do przeliczenia, przy czym pola są oddzielone wartością FSO. Bibliografia
do pól o numerach ujemnych powoduje błąd krytyczny. Zmniejszanie NF powoduje wartości
pola po nowej wartości do utraty, a wartość $0 do przeliczenia, z
pola oddzielone wartością FSO.

Przypisanie wartości do istniejącego pola powoduje odbudowanie całego rekordu, gdy $0 is
powołany. Podobnie, przypisując wartość do $0 powoduje podział rekordu, tworzenie
nowe wartości pól.

Wbudowany Zmienne
Gapić sięWbudowane zmienne to:

ARGC Liczba argumentów wiersza poleceń (nie zawiera opcji do gapić sięLub
źródło programu).

ARGIND Indeks w ARGV aktualnie przetwarzanego pliku.

ARGV Tablica argumentów wiersza poleceń. Tablica jest indeksowana od 0 do ARGC - 1.
Dynamicznie zmieniająca zawartość ARGV może kontrolować pliki używane do danych.

TRYB BIN W systemach innych niż POSIX określa użycie trybu „binarnego” dla wszystkich operacji wejścia/wyjścia plików.
Wartości liczbowe 1, 2 lub 3 określają, że pliki wejściowe, pliki wyjściowe lub wszystkie
pliki powinny używać binarnych operacji we/wy. Wartości ciągu znaków "r"lub „w”
określić, że odpowiednio pliki wejściowe lub pliki wyjściowe powinny używać pliku binarnego
We/Wy. Wartości ciągu znaków "rw" or "wr" określić, że wszystkie pliki powinny używać plików binarnych
We/Wy. Każda inna wartość ciągu jest traktowana jako "rw", ale generuje ostrzeżenie
wiadomość.

KONVFMT Format konwersji liczb, „%.6g”, domyślnie.

OTACZAĆ Tablica zawierająca wartości bieżącego środowiska. Tablica to
indeksowane przez zmienne środowiskowe, każdy element jest wartością tego
zmienna (np. ŚRODOWISKO["DOM"] może być "/dom/arnold"). Zmiana tej tablicy
nie wpływa na środowisko widziane przez programy, które gapić się odradza się przez
przekierowanie lub system() funkcja.

BŁĄD Jeśli wystąpi błąd systemowy, wykonaj przekierowanie dla pobierz linię, podczas czytania
dla pobierz linię, lub podczas blisko(), następnie BŁĄD będzie zawierać napis opisujący
błąd. Wartość podlega tłumaczeniu w językach innych niż angielski.

SZEROKOŚĆ POLA Lista szerokości pól oddzielona spacjami. Po ustawieniu gapić się analizuje dane wejściowe
w pola o stałej szerokości, zamiast używać wartości FS zmienna jak
separator pól. Widzieć Łąka, powyżej.

NAZWA PLIKU Nazwa bieżącego pliku wejściowego. Jeśli w poleceniu nie określono żadnych plików
linia, wartość NAZWA PLIKU jest "-". Jednakże, NAZWA PLIKU jest nieokreślony wewnątrz
ZACZYNAĆ reguła (chyba że ustawiona przez pobierz linię).

FNR Numer rekordu wejściowego w bieżącym pliku wejściowym.

FPAT Wyrażenie regularne opisujące zawartość pól w rekordzie. Kiedy
zestaw, gapić się analizuje dane wejściowe w polach, w których pola pasują do zwykłego
wyrażenie, zamiast używać wartości FS zmienna jako pole
separator. Widzieć Łąka, powyżej.

FS Separator pól wejściowych, domyślnie spacja. Widzieć Łąka, powyżej.

FUNKCJA Tablica, której indeksy i odpowiadające im wartości są nazwami wszystkich użytkowników
zdefiniowane lub rozszerzone funkcje w programie. UWAGA: Nie możesz używać
usunąć oświadczenie z FUNKCJA szyk.

IGNORUJ PRZYPADEK Steruje rozróżnianiem wielkości liter we wszystkich wyrażeniach regularnych i operacjach na ciągach.
If IGNORUJ PRZYPADEK ma wartość niezerową, a następnie porównania ciągów i wzorzec
dopasowanie w regułach, dzielenie pól za pomocą FS i FPAT, nagraj oddzielenie za pomocą
RS, wyrażenie regularne pasujące do ~ i !~i gensub(), gsub(),
indeks(), mecz(), patrozdziel(), rozdzielać(), pod() wszystkie wbudowane funkcje ignorują
przypadek podczas wykonywania operacji na wyrażeniach regularnych. UWAGA: Indeksowanie tablicy to
nie dotknięty. Jednakże rodzaj() i asortyment() funkcje są naruszone.
Tak więc, jeśli IGNORUJ PRZYPADEK nie jest równy zero, /aB/ pasuje do wszystkich ciągów
"ab", „AB”, „Ab”, „AB”. Podobnie jak w przypadku wszystkich zmiennych AWK, wartość początkowa
IGNORUJ PRZYPADEK wynosi zero, więc wszystkie operacje na wyrażeniach regularnych i łańcuchach są
zwykle rozróżniana jest wielkość liter.

SZARPIE Zapewnia dynamiczną kontrolę --szarpie opcja z poziomu programu AWK.
Kiedy prawda, gapić się drukuje ostrzeżenia o kłaczkach. Kiedy fałszywe, nie. Po przypisaniu
wartość ciągu "fatalny", ostrzeżenia o szarpie stają się błędami krytycznymi, dokładnie tak jak
--lint=śmiertelny. Każda inna wartość true wyświetla tylko ostrzeżenia.

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

NR Łączna liczba dotychczasowych rekordów wejściowych.

OFMT Format wyjściowy dla liczb, „%.6g”, domyślnie.

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

rozszerzenie OR Separator rekordów wyjściowych, domyślnie znak nowej linii.

POPRZEDNI Dokładność robocza liczb zmiennoprzecinkowych o dowolnej precyzji, 53 by
domyślna.

PROCINFO Elementy tej tablicy zapewniają dostęp do informacji o uruchomionym AWK
program. W niektórych systemach w tablicy mogą znajdować się elementy, "Grupa 1"
przez "Grupan" dla niektórych n, czyli liczba grup uzupełniających, które
proces ma. Użyj in operatora, aby przetestować te elementy. ten
Gwarantujemy dostępność następujących elementów:

PROCINFO["eid"] Wartość getegid(2) wywołanie systemowe.

PROCINFO["strftime"]
Domyślny ciąg formatu czasu dla strftime().

PROCINFO["euid"] Wartość geteuid(2) wywołanie systemowe.

PROCINFO["FS"] „FS” jeśli podział na pola z FS obowiązuje, „FPAT” if
dzielenie pól za pomocą FPAT obowiązuje, lub "SZEROKOŚĆ POLA"
jeśli podział na pola z SZEROKOŚĆ POLA obowiązuje.

PROCINFO["identyfikatory"]
Podtablica, indeksowana nazwami wszystkich użytych identyfikatorów
w tekście programu AWK. Wartości wskazują co
gapić się wie o identyfikatorach po zakończeniu
parsowanie programu; oni są nie zaktualizowany, podczas gdy
program działa. Dla każdego identyfikatora wartość
element jest jednym z następujących:

"szyk"
Identyfikator jest tablicą.

„wbudowany”
Identyfikator jest funkcją wbudowaną.

"rozbudowa"
Identyfikator jest funkcją rozszerzenia ładowaną przez
@Załaduj or -l.

"skalarny"
Identyfikator jest skalarem.

„bez wpisu”
Identyfikator nie jest wpisany (może być użyty jako
skalarny lub tablicowy, gapić się jeszcze nie wie).

"użytkownik" Identyfikator jest funkcją zdefiniowaną przez użytkownika.

PROCINFO["gid"] Wartość zwariować(2) wywołanie systemowe.

PROCINFO["pgrpid"] Identyfikator grupy procesów bieżącego procesu.

PROCINFO["pid"] Identyfikator procesu bieżącego procesu.

PROCINFO["ppid"] Identyfikator procesu nadrzędnego bieżącego procesu.

PROCINFO["uid"] Wartość getuid(2) wywołanie systemowe.

PROCINFO["posortowane_w"]
Jeśli ten element istnieje w PROCINFO, to jego wartość
kontroluje kolejność przechodzenia elementów tablicy
in dla pętle. Obsługiwane wartości to „@ind_str_asc”,
„@ind_num_asc”, „@val_type_asc”, „@val_str_asc”,
„@val_num_asc”, „@ind_str_desc”, „@ind_num_desc”,
„@val_type_desc”, „@val_str_desc”, „@val_num_desc”,
"@nieposortowany". Wartością może być również nazwa dowolnego
funkcja porównawcza zdefiniowana w następujący sposób:

funkcjonować cmp_func(i1, v1, i2, v2)

gdzie i1 i i2 są indeksy i v1 i v2
odpowiadające wartości dwóch porównywanych elementów.
Powinien zwrócić liczbę mniejszą, równą lub większą
niż 0, w zależności od tego, jak elementy tablicy mają
być uporządkowane.

PROCINFO["wejście", „READ_TIMEOUT”]
Limit czasu w milisekundach na odczyt danych z wkład,
gdzie wkład jest ciągiem przekierowania lub nazwą pliku. Wartość
zero lub mniej niż zero oznacza brak limitu czasu.

PROCINFO["mpfr_version"]
Wersja biblioteki GNU MPFR używana do dowolnego
obsługa liczb precyzyjnych w gapić się. Ten wpis nie jest
obecne, jeśli obsługa MPFR nie jest skompilowana do gapić się.

PROCINFO["wersja_gmp"]
Wersja biblioteki GNU MP używana do arbitralnych
obsługa liczb precyzyjnych w gapić się. Ten wpis nie jest
obecne, jeśli obsługa MPFR nie jest skompilowana do gapić się.

PROCINFO["prec_max"]
Maksymalna precyzja obsługiwana przez bibliotekę GNU MPFR
dla liczb zmiennoprzecinkowych o dowolnej precyzji. Ten
wpis nie występuje, jeśli obsługa MPFR nie jest skompilowana do
gapić się.

PROCINFO["prec_min"]
Minimalna precyzja dozwolona przez bibliotekę GNU MPFR dla
liczby zmiennoprzecinkowe o dowolnej precyzji. Ten wpis jest
nie występuje, jeśli obsługa MPFR nie jest skompilowana do gapić się.

PROCINFO["api_major"]
Główna wersja rozszerzenia API. Ten wpis nie jest
obecne, jeśli wczytywanie rozszerzeń dynamicznych nie jest dostępne.

PROCINFO["api_minor"]
Mniejsza wersja rozszerzenia API. Ten wpis nie jest
obecne, jeśli wczytywanie rozszerzeń dynamicznych nie jest dostępne.

PROCINFO["wersja"] wersja gapić się.

TRYB ZAOKR Tryb zaokrąglania używany do arytmetyki o dowolnej precyzji na liczbach, przez
domyślnym „N” (tryb IEEE-754 roundTiesToEven). Akceptowane wartości to „N” or
"n" dla okrągłych powiązań do parzystości, "U" or "ty" dla roundTowardPositive, "D" or "re" dla
roundTowardNegatywne, „Z” or "z" dla roundTowardZero, a jeśli twoja wersja
obsługuje go biblioteka GNU MPFR, "A" or "za" za okrągłyWięzy na wyjeździe.

RS Separator rekordów wejściowych, domyślnie znak nowej linii.

RT Terminator rekordu. Gapić się zestawy RT do tekstu wejściowego, który pasował do
znak lub wyrażenie regularne określone przez RS.

START Indeks pierwszego znaku dopasowanego przez mecz(); 0 jeśli brak dopasowania. (Ten
oznacza, że ​​indeksy znaków zaczynają się od XNUMX.)

DŁUGOŚĆ Długość ciągu dopasowana przez mecz(); -1 jeśli nie pasuje.

PODSEP Znak używany do oddzielania wielu indeksów dolnych w elementach tablicy, przez
domyślnym „\034”.

SYMTAB Tablica, której indeksami są nazwy wszystkich aktualnie zdefiniowanych zmiennych globalnych
i tablice w programie. Tablica może służyć do pośredniego dostępu do odczytu
lub wpisz wartość zmiennej:

bla = 5
SYMTAB["foo"] = 4
bla # wydruki 4

Połączenia isarray() funkcja może być użyta do sprawdzenia, czy element w SYMTAB jest
szyk. Nie możesz używać usunąć oświadczenie z SYMTAB szyk.

DOMENA TEKSTU Domena tekstowa programu AWK; używany do wyszukiwania zlokalizowanych tłumaczeń
dla ciągów programu.

Tablice
Tablice są indeksowane wyrażeniem w nawiasach kwadratowych ([ i ]). Jeśli
wyrażenie to lista wyrażeń (expr, expr ...) to indeks tablicy jest ciągiem
składający się z konkatenacji wartości (łańcucha) każdego wyrażenia, oddzielonych znakiem
wartość PODSEP zmienny. Ta funkcja służy do symulowania wielu wymiarów
tablice. Na przykład:

i = "A"; j = "B"; k = "C"
x[i, j, k] = "dzień dobry, świat\n"

przypisuje ciąg "dzień dobry, świat\n" do elementu tablicy x który jest indeksowany przez
ciąg „A\034B\034C”. Wszystkie tablice w AWK są asocjacyjne, tj. indeksowane wartościami łańcuchowymi.

Operator specjalny in może być użyty do sprawdzenia, czy tablica ma indeks składający się z
szczególna wartość:

if (wart in szyk)
tablica[wartość]

Jeśli tablica ma wiele indeksów dolnych, użyj (ja, j) in szyk.

Połączenia in konstrukcja może być również używana w dla pętla do iteracji po wszystkich elementach an
szyk. Jednakże (ja, j) in szyk konstrukcja działa tylko w testach, nie w dla pętle.

Element można usunąć z tablicy za pomocą usunąć oświadczenie. ten usunąć oświadczenie
może być również użyty do usunięcia całej zawartości tablicy, po prostu określając tablicę
nazwa bez indeksu dolnego.

gapić się obsługuje prawdziwe tablice wielowymiarowe. Nie wymaga, aby takie tablice były
„prostokątne”, jak w C lub C++. Na przykład:

[1] = 5
[2] [1] = 6
[2] [2] = 7

UWAGA: Być może będziesz musiał powiedzieć gapić się że element tablicy jest tak naprawdę podtablicą, aby użyć
to gdzie gapić się oczekuje tablicy (tak jak w drugim argumencie do rozdzielać()). Możesz to zrobić
to poprzez utworzenie elementu w podtablicy, a następnie usunięcie go za pomocą usunąć
komunikat.

Zmienna Wpisując oraz Konwersja
Zmienne i pola mogą być liczbami (zmiennoprzecinkowymi), ciągami lub jednym i drugim. jak wartość
zmiennej jest interpretowana w zależności od jej kontekstu. Jeśli jest używany w wyrażeniu liczbowym,
będzie traktowany jako liczba; jeśli zostanie użyty jako łańcuch, będzie traktowany jako łańcuch.

Aby wymusić traktowanie zmiennej jako liczby, dodaj do niej 0; zmusić do traktowania go jako
string, połącz go z pustym łańcuchem.

Niezainicjowane zmienne mają wartość liczbową 0 i ciąg znaków "" (wartość null lub
pusta struna).

Gdy ciąg musi zostać przekonwertowany na liczbę, konwersja jest dokonywana za pomocą
strzod(3). Liczba jest konwertowana na łańcuch przy użyciu wartości KONVFMT jako format
ciąg znaków dla sprint(3), z wartością numeryczną zmiennej jako argumentem. Jednakże,
mimo że wszystkie liczby w AWK są zmiennoprzecinkowe, wartości całkowite to zawsze przekonwertowany jako
liczby całkowite. Tak więc, biorąc pod uwagę

KONVFMT = „%2.2f”
a = 12
b = a ""

zmienna b ma ciąg znaków "12" i uwaga "12.00".

UWAGA: Podczas pracy w trybie POSIX (np. z --posiks opcja), uważaj, że lokalizacja
ustawienia mogą kolidować ze sposobem traktowania liczb dziesiętnych: separator dziesiętny
numery, którym się karmisz gapić się musi być zgodny z oczekiwaniami twojego regionu, czy to a
przecinek (,) lub kropka (.).

Gapić się wykonuje porównania w następujący sposób: Jeśli dwie zmienne są numeryczne, są porównywane
liczebnie. Jeśli jedna wartość jest liczbowa, a druga ma ciąg znaków, który jest „numerycznym
string”, wtedy porównania są również dokonywane numerycznie. W przeciwnym razie wartością liczbową jest
konwertowane na ciąg i wykonywane jest porównanie ciągów. Porównywane są dwie struny, z
oczywiście jako struny.

Zauważ, że stałe łańcuchowe, takie jak "57"ma nie ciągi numeryczne, są ciągami
stałe. Idea „ciągu numerycznego” dotyczy tylko pól, pobierz linię Wejście, NAZWA PLIKU,
ARGV elementy, OTACZAĆ elementy i elementy tablicy utworzonej przez rozdzielać() or
patrozdziel() które są ciągami liczbowymi. Podstawowa idea jest taka, że użytkownik wkładi tylko użytkownik
dane wejściowe, które wyglądają na numeryczne, powinny być traktowane w ten sposób.

Oktal i Szesnastkowy Stałe
Możesz używać stałych ósemkowych i szesnastkowych w stylu C w kodzie źródłowym programu AWK. Do
przykład, wartość ósemkowa 011 jest równe dziesiętnemu 9i wartość szesnastkowa 0x11 is
równy dziesiętnemu 17.

sznur Stałe
Stałe łańcuchowe w AWK to sekwencje znaków ujęte między podwójnymi cudzysłowami (np.
"wartość"). W ramach ciągów, pewne uciec sekwencje są rozpoznawane, jak w C. Są to:

\\ Dosłowny ukośnik odwrotny.

\a Znak „ostrzeżenia”; zwykle znak ASCII BEL.

\b Backspace.

\f Podawanie formularzy.

\n Nowa linia.

\r Zwrot karetki.

\t Zakładka pozioma.

\v Zakładka pionowa.

\xhex cyfry
Znak reprezentowany przez ciąg cyfr szesnastkowych po znaku \x. Jak
w ISO C wszystkie kolejne cyfry szesnastkowe są uważane za część ucieczki
sekwencja. (Ta funkcja powinna nam coś powiedzieć o projektowaniu języka przez
komisji.) Np. „\x1B” to znak ASCII ESC (wyjście).

\ddd Znak reprezentowany przez 1-, 2- lub 3-cyfrową sekwencję cyfr ósemkowych. Np,
„\033” to znak ASCII ESC (wyjście).

\c Dosłowny znak c.

Sekwencje specjalne mogą być również używane wewnątrz stałych wyrażeń regularnych (np.
/[ \t\f\n\r\v]/ dopasowuje białe znaki).

W trybie zgodności znaki reprezentowane przez znaki ucieczki ósemkowej i szesnastkowej
sekwencje są traktowane dosłownie, gdy są używane w stałych wyrażeniach regularnych. Zatem, /a\52b/
odpowiada /a\*b/.

WZORY ROLNICZE DZIAŁANIA


AWK jest językiem zorientowanym liniowo. Najpierw jest wzór, a potem akcja. Akcja
oświadczenia są zawarte w { i }. Albo może brakować wzoru, albo czynność może:
zaginąć, ale oczywiście nie jedno i drugie. W przypadku braku wzorca akcja jest wykonywana
dla każdego rekordu danych wejściowych. Brakująca akcja jest równoważna

{ }

który drukuje cały rekord.

Komentarze zaczynają się od # znak i kontynuuj do końca wiersza. Puste linie
mogą służyć do wyodrębniania oświadczeń. Zwykle instrukcja kończy się znakiem nowej linii, jednak
nie dotyczy to wierszy zakończonych przecinkiem, {, ?, :, &&lub ||. Linie kończące się na do
or więcej również mają automatyczne kontynuowanie ich wypowiedzi w następnym wierszu. w
w innych przypadkach wiersz można kontynuować, kończąc go znakiem „\”, w którym to przypadku znak nowej linii to
ignorowane.

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

wzory
Wzorce AWK mogą być jednym z następujących:

ZACZYNAĆ
KONIEC
POCZĄTEK
PLIK KOŃCOWY
/regularny wyrażenie/
relacyjny wyrażenie
wzorzec && wzorzec
wzorzec || wzorzec
wzorzec ? wzorzec : wzorzec
(wzorzec)
! wzorzec
pattern1, pattern2

ZACZYNAĆ i KONIEC to dwa specjalne rodzaje wzorców, które nie są testowane z danymi wejściowymi.
Części akcji wszystkich ZACZYNAĆ wzorce są scalane tak, jakby wszystkie wypowiedzi były
napisane w jednym ZACZYNAĆ reguła. Są one wykonywane przed odczytaniem któregokolwiek z danych wejściowych.
Podobnie wszystkie KONIEC reguły są łączone i wykonywane, gdy wszystkie dane wejściowe zostaną wyczerpane (lub
kiedy wyjście instrukcja jest wykonywana). ZACZYNAĆ i KONIEC wzory nie łączą się z innymi
wzorce w wyrażeniach wzorcowych. ZACZYNAĆ i KONIEC we wzorcach nie może brakować części akcji.

POCZĄTEK i PLIK KOŃCOWY są dodatkowymi specjalnymi wzorami, których ciała są wykonywane wcześniej
odczytanie pierwszego rekordu każdego pliku wejściowego wiersza poleceń i po odczytaniu ostatniego rekordu
każdego pliku. W środku POCZĄTEK reguła, wartość BŁĄD będzie pustym ciągiem, jeśli
plik został pomyślnie otwarty. W przeciwnym razie jest jakiś problem z plikiem i
kod powinien używać następny plik pominąć to. Jeśli tego nie zrobisz, gapić się produkuje swoje zwykłe śmiertelne
błąd dla plików, których nie można otworzyć.

W razie zamówieenia projektu /regularny wyrażenie/ wzorce, skojarzona instrukcja jest wykonywana dla każdego wejścia
rekord, który pasuje do wyrażenia regularnego. Wyrażenia regularne są takie same jak w
egrep(1) i są podsumowane poniżej.

A relacyjny wyrażenie może używać dowolnego z operatorów zdefiniowanych poniżej w sekcji dotyczącej
działania. Zwykle sprawdzają, czy określone pola pasują do określonych wyrażeń regularnych.

Połączenia &&, ||, ! operatorami są odpowiednio logiczne AND, logiczne OR i logiczne NIE,
jak w C. Dokonują oceny zwarcia, również jak w C i służą do łączenia więcej
prymitywne wyrażenia wzorcowe. Jak w większości języków, do zmiany można użyć nawiasów
kolejność oceny.

Połączenia ?: operator jest jak ten sam operator w C. Jeśli pierwszy wzorzec jest prawdziwy, wtedy
wzorzec używany do testowania to drugi wzorzec, w przeciwnym razie jest to trzeci. Tylko jeden z
oceniany jest drugi i trzeci wzorzec.

Połączenia pattern1, pattern2 forma wyrażenia nazywa się a zasięg wzorzec. To pasuje do wszystkich
rekordy wejściowe zaczynające się od rekordu, który pasuje pattern1, i kontynuuję aż do rekordu
to pasuje pattern2, włącznie. Nie łączy się z żadnym innym wzorem
wyrażenie.

Regularna Expressions
Wyrażenia regularne są rodzajem rozszerzonym znajdującym się w egrep. Składają się z postaci
w sposób następujący:

c Dopasowuje nie metaznak c.

\c Dopasowuje dosłowny znak c.

. Pasuje do dowolnej postaci włącznie z Nowa linia.

^ Dopasowuje początek ciągu.

$ Dopasowuje koniec ciągu.

[ABC...] Lista znaków: pasuje do dowolnego znaku ABC.... Możesz dołączyć
zakres znaków, oddzielając je myślnikiem.

[^ABC...] Lista zanegowanych znaków: pasuje do dowolnego znaku z wyjątkiem ABC....

r1|r2 Alternatywa: pasuje albo r1 or r2.

r1r2 Konkatenacja: mecze r1, A następnie r2.

r+ Pasuje do jednego lub więcej r"S.

r* Dopasowuje zero lub więcej r"S.

r? Dopasowuje zero lub jeden r"S.

(r) Grupowanie: mecze r.

r{n}
r{n,}
r{n,m} Jedna lub dwie liczby w nawiasach klamrowych oznaczają interwał wyrażenie. Jeśli jest
jedna liczba w nawiasach klamrowych, poprzedzające wyrażenie regularne r jest powtorzone n
czasy. Jeśli są dwie liczby oddzielone przecinkiem, r jest powtorzone n do m
czasy. Jeśli jest jedna liczba, po której następuje przecinek, to r powtarza się przynajmniej
n razy.

\y Dopasowuje pusty ciąg na początku lub na końcu słowa.

\B Dopasowuje pusty ciąg w słowie.

\< Dopasowuje pusty ciąg na początku słowa.

\> Dopasowuje pusty ciąg na końcu słowa.

\s Dopasowuje dowolny znak odstępu.

\S Dopasowuje dowolny znak inny niż biały.

\w Dopasowuje dowolny znak składający się na słowo (litera, cyfra lub podkreślenie).

\W Dopasowuje dowolny znak, który nie składa się ze słów.

\` Dopasowuje pusty ciąg na początku bufora (ciąg).

\' Dopasowuje pusty ciąg na końcu bufora.

Sekwencje specjalne, które są poprawne w stałych łańcuchowych (zobacz sznur Stałe) są także
obowiązuje w wyrażeniach regularnych.

Postać Klasy to funkcja wprowadzona w standardzie POSIX. Klasa postaci to
specjalna notacja opisująca listy znaków, które mają określony atrybut, ale
gdzie same postacie mogą się różnić w zależności od kraju i/lub kraju
zestaw znaków na zestaw znaków. Na przykład pojęcie tego, co jest alfabetem
różni się charakterem w USA i we Francji.

Klasa znaków jest prawidłowa tylko w wyrażeniu regularnym wewnątrz nawiasy znaku
lista. Klasy postaci składają się z [:, słowo kluczowe oznaczające klasę, oraz :],
klasy znaków zdefiniowane przez standard POSIX to:

[:aln:] Znaki alfanumeryczne.

[:alfa:] Znaki alfabetyczne.

[:pusty:] Znaki spacji lub tabulatorów.

[:ctrl:] Postacie kontrolne.

[:cyfra:] Znaki numeryczne.

[:wykres:] Znaki, które można wydrukować i zobaczyć. (Spację można wydrukować, ale nie
widoczne, podczas gdy a jest zarówno.)

[:niżej:] Małe litery alfabetu.

[:wydrukować:] Znaki drukowane (znaki, które nie są znakami kontrolnymi).

[:punkt:] Znaki interpunkcyjne (znaki, które nie są literami, cyframi, kontrolką)
znaków lub spacji).

[:przestrzeń:] Znaki spacji (takie jak spacja, tabulator i wysuw strony, żeby wymienić tylko kilka).

[:górny:] Wielkie litery alfabetu.

[:xcyfra:] Znaki będące cyframi szesnastkowymi.

Na przykład przed standardem POSIX, aby dopasować znaki alfanumeryczne, należałoby
musiałem napisać /[A-Za-z0-9]/. Jeśli twój zestaw znaków zawierał inne znaki alfabetyczne,
to nie pasuje do nich, a jeśli twój zestaw znaków jest sortowany inaczej niż ASCII, to
może nawet nie pasować do znaków alfanumerycznych ASCII. Dzięki klasom znaków POSIX,
Możesz pisać /[[:alnum:]]/, a to pasuje do znaków alfabetycznych i numerycznych w
Twój zestaw znaków, bez względu na to, jaki jest.

Na listach znaków mogą pojawić się dwie dodatkowe sekwencje specjalne. Dotyczy to nie-ASCII
zestawy znaków, które mogą mieć pojedyncze symbole (tzw zestawianie Elementy) to są
reprezentowane przez więcej niż jeden znak, a także kilka znaków, które są
odpowiednik zestawianielub sortowanie celów. (Np. w języku francuskim zwykłe „e” i a
z akcentem grobowym „`” są równoważne.)

Symbole sortowania
Symbol porównywania to wieloznakowy element porównywania zawarty w [. i .].
Na przykład, jeśli ch jest elementem zestawienia, to [[.kan.]] jest wyrażeniem regularnym
który pasuje do tego elementu sortowania, podczas gdy [kan] jest wyrażeniem regularnym, które
pasuje albo c or h.

Klasy równoważności
Klasa równoważności to nazwa specyficzna dla ustawień regionalnych dla listy znaków, które są
równowartość. Nazwa jest zawarta w [= i =]. Na przykład nazwa e może być
używane do reprezentowania wszystkich „e”, „´” i „`”. W tym przypadku, [[=e=]] jest regularny
wyrażenie pasujące do dowolnego z e, milub e`.

Te funkcje są bardzo cenne w lokalizacjach nieanglojęzycznych. Funkcje biblioteki
że gapić się używa do dopasowywania wyrażeń regularnych obecnie rozpoznaje tylko znaki POSIX
zajęcia; nie rozpoznają symboli sortowania ani klas równoważności.

Połączenia \y, \B, \<, \>, \s, \S, \w, \W, \`, \' operatorzy są specyficzni dla gapić się; oni są
rozszerzenia oparte na udogodnieniach w bibliotekach wyrażeń regularnych GNU.

Różne opcje wiersza poleceń kontrolują sposób gapić się interpretuje znaki w zwykły sposób
wyrażenia.

Brak opcji
W przypadku domyślnym gapić się zapewnia wszystkie udogodnienia wyrażeń regularnych POSIX
oraz operatory wyrażeń regularnych GNU opisane powyżej.

--posiks
Obsługiwane są tylko wyrażenia regularne POSIX, operatory GNU nie są specjalne.
(Np, \w pasuje do dosłownego w).

--tradycyjny
Tradycyjny UNIX Awk wyrażenia regularne są dopasowywane. Operatorzy GNU nie są
wyrażenia specjalne i interwałowe nie są dostępne. Znaki opisane przez ósemkowe
a szesnastkowe sekwencje specjalne są traktowane dosłownie, nawet jeśli reprezentują
metaznaki wyrażeń regularnych.

--re-interwał
Zezwalaj na wyrażenia interwałowe w wyrażeniach regularnych, nawet jeśli --tradycyjny został
opatrzony.

Akcje
Instrukcje akcji są ujęte w nawiasy klamrowe, { i }. Instrukcje działania składają się ze zwykłych
instrukcje przypisania, warunkowe i zapętlenia występujące w większości języków. Operatorzy,
Instrukcje sterujące i dostępne instrukcje wejścia/wyjścia są wzorowane na tych w języku C.

Operatorzy
Operatory w AWK, w kolejności malejącego pierwszeństwa, to:

(...) Grupowanie

$ Odniesienie do pola.

++ -- Inkrementacja i dekrementacja, zarówno przedrostek, jak i przyrostek.

^ Potęgowanie (** może być również używany, i ** = dla operatora przypisania).

+ - ! Jednoargumentowy plus, jednoargumentowy minus i logiczna negacja.

* / % Mnożenie, dzielenie i moduł.

+ - Dodawanie i odejmowanie.

przestrzeń Łączenie ciągów.

| |& Rurociągowe we/wy dla pobierz linię, , printf.

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

~ !~ Dopasowanie wyrażenia regularnego, dopasowanie zanegowane. UWAGA: Nie używaj stałego regularnego
wyrażenie (/bla/) po lewej stronie a ~ or !~. Używaj tylko jednego na
prawa strona. Ekspresja /bla/ ~ exp ma to samo znaczenie co ((0 zł ~
/bla/) ~ exp). Tak jest zwykle nie co chcesz.

in Członkostwo w tablicy.

&& Logiczne I.

|| Logiczne LUB.

?: Wyrażenie warunkowe C. To ma formę wyr1 ? wyr2 : wyr3. Jeśli
wyr1 jest prawdziwe, wartość wyrażenia to wyr2, w przeciwnym razie jest wyr3.
Tylko jeden z wyr2 i wyr3 jest oceniany.

= += -= *= /= %= ^=
Zadanie. Oba bezwzględne przypisanie (było = wartość) i przypisanie operatora
(inne formy) są obsługiwane.

Control Oświadczenia
Oświadczenia kontrolne są następujące:

if (warunek) oświadczenie [ więcej oświadczenie ]
Podczas (warunek) oświadczenie
do oświadczenie Podczas (warunek)
dla (wyr1; wyr2; wyr3) oświadczenie
dla (było in szyk) oświadczenie
złamać
kontynuować
usunąć szyk[wskaźnik]
usunąć szyk
wyjście [ wyrażenie ]
{ oświadczenia }
wyłącznik (wyrażenie) {
walizka wartość|regex : oświadczenie
...
[ domyślna: oświadczenie ]
}

I / O Oświadczenia
Oświadczenia wejścia/wyjścia są następujące:

blisko(filet [, w jaki sposób]) Zamknij plik, potok lub współproces. Opcjonalne w jaki sposób powinno być
używany podczas zamykania jednego końca rury dwukierunkowej w procesie współprocesowym. Ono
albo musi być ciągiem znaków "do" or "z".

pobierz linię Zestaw $0 z następnego rekordu wejściowego; ustawić NF, NR, FNR, RT.

pobierz linię <filet Zestaw $0 od następnego rekordu z filet; ustawić NF, RT.

pobierz linię było Zestaw było z następnego rekordu wejściowego; ustawić NR, FNR, RT.

pobierz linię było <filet Zestaw było od następnego rekordu z filet, RT.

komenda | pobierz linię [było]
run komenda rurowanie wyjścia albo do $0 or było, jak wyżej, i
RT.

komenda |& pobierz linię [było]
run komenda jako współproces, który doprowadza wyjście albo do $0 or było,
jak wyżej i RT. Współprocesy są gapić się rozbudowa. (komenda mogą
również być gniazdem. Zobacz podrozdział Specjalny filet nazwy, poniżej.)

Następny Zatrzymaj przetwarzanie bieżącego rekordu wejściowego. Następny rekord wejściowy to
odczyt i przetwarzanie zaczyna się od pierwszego wzorca w AWK
program. Po osiągnięciu końca danych wejściowych, gapić się wykonuje dowolne
KONIEC zasady).

następny plik Zatrzymaj przetwarzanie bieżącego pliku wejściowego. Następny rekord wejściowy przeczytany
pochodzi z następnego pliku wejściowego. NAZWA PLIKU i ARGIND są aktualizowane,
FNR jest resetowany do 1, a przetwarzanie rozpoczyna się od początku od pierwszego wzorca
w programie AWK. Po osiągnięciu końca danych wejściowych, gapić się
wykonuje dowolne KONIEC zasady).

Wydrukuj bieżący rekord. Rekord wyjściowy jest zakończony znakiem
wartość rozszerzenie OR.

lista-ekspresów Wyrażenia drukowania. Każde wyrażenie jest oddzielone wartością
FSO. Rekord wyjściowy jest zakończony wartością rozszerzenie OR.

lista-ekspresów >filet Drukuj wyrażenia włączone filet. Każde wyrażenie jest oddzielone znakiem
wartość FSO. Rekord wyjściowy jest zakończony wartością
rozszerzenie OR.

printf fmt, lista-ekspresów Formatuj i drukuj. Widzieć Połączenia printf Zestawienie sprzedażyPoniżej.

printf fmt, lista-ekspresów >filet
Formatuj i drukuj na filet.

system(wiersz polecenia) Wykonaj polecenie wiersz poleceniai zwróć kod zakończenia. (Tego maja
niedostępne w systemach innych niż POSIX.)

spłukać ([filet]) Opróżnij wszystkie bufory związane z otwartym plikiem wyjściowym lub potoku filet.
If filet brakuje lub jeśli jest to łańcuch pusty, opróżnij wszystkie otwarte
pliki wyjściowe i potoki.

Dodatkowe przekierowania wyjścia są dozwolone dla i printf.

... >> filet
Dołącza dane wyjściowe do filet.

... | komenda
Pisze na fajce.

... |& komenda
Wysyła dane do współprocesu lub gniazda. (Patrz także podrozdział Specjalny filet nazwy,
poniżej.)

Połączenia pobierz linię polecenie zwraca 1 w przypadku powodzenia, 0 na końcu pliku i -1 w przypadku błędu. Po
błąd, BŁĄD jest ustawiony na ciąg opisujący problem.

UWAGA: Niepowodzenie w otwarciu dwukierunkowego gniazda skutkuje zwróceniem niekrytycznego błędu
funkcja wywołująca. Jeśli używasz rury, współprocesu lub kielicha do pobierz linię, Lub or
printf w pętli, ty musi posługiwać się blisko() aby utworzyć nowe instancje polecenia lub
gniazdo elektryczne. AWK nie zamyka automatycznie rur, kielichów ani współprocesów po ich powrocie
EOF.

Połączenia printf Zestawienie sprzedaży
Wersje AWK printf oświadczenie i sprintf() funkcja (patrz niżej) zaakceptuj
następujące formaty specyfikacji konwersji:

%c Pojedynczy znak. Jeśli argument użyty do %c jest liczbowy, jest traktowany jako a
znak i drukowane. W przeciwnym razie zakłada się, że argument jest łańcuchem, a
wypisywany jest tylko pierwszy znak tego łańcucha.

%d, %i Liczba dziesiętna (część całkowita).

%e, %E Liczba zmiennoprzecinkowa formularza [-]d.dddddde[+-]dd, %E używa formatu E
zamiast e.

%f, %F Liczba zmiennoprzecinkowa formularza [-]ddd.dddddd. Jeśli biblioteka systemowa obsługuje
to, %F jest również dostępny. To jest jak %f, ale używa wielkich liter dla specjalnego
wartości „nie liczba” i „nieskończoność”. Gdyby %F jest niedostępne, gapić się zastosowania %f.

%g, %G Zastosowanie %e or %f konwersja, którakolwiek jest krótsza, z nieznaczącymi zerami
zduszony. ten %G używa formatu %E zamiast %e.

%o Liczba ósemkowa bez znaku (również liczba całkowita).

%u Liczba dziesiętna bez znaku (znowu liczba całkowita).

%s Ciąg znaków.

%x, %X Liczba szesnastkowa bez znaku (liczba całkowita). ten %X używa formatu ALFABET zamiast
Alfabet.

%% Pojedynczy % postać; żaden argument nie jest konwertowany.

Opcjonalne, dodatkowe parametry mogą znajdować się między % oraz list kontrolny:

liczyć$ Użyj liczyćargument w tym momencie formatowania. Nazywa się to
pozycyjny specyficzny i jest przeznaczony głównie do użytku w przetłumaczonych wersjach
ciągi formatujące, a nie w oryginalnym tekście programu AWK. To jest gapić się
rozbudowa.

- Wyrażenie powinno być wyrównane do lewej w jego polu.

przestrzeń W przypadku konwersji liczbowych poprzedź wartości dodatnie spacją, a wartości ujemne
ze znakiem minus.

+ Znak plus, używany przed modyfikatorem szerokości (patrz poniżej), mówi, aby zawsze podawać a
znak dla konwersji numerycznych, nawet jeśli dane do sformatowania są dodatnie. ten +
nadpisuje modyfikator przestrzeni.

# Użyj „formy alternatywnej” dla niektórych listów kontrolnych. Do %o, podaj wiodący
zero. Do %x, %X, podaj wiodący 0x or 0X dla wyniku niezerowego. Do %e, %E,
%f i %F, wynik zawsze zawiera kropkę dziesiętną. Do %g, %G, końcowe
zera nie są usuwane z wyniku.

0 Wiodący 0 (zero) działa jak flaga, która wskazuje, że wyjście powinno być wypełnione
zera zamiast spacji. Dotyczy to tylko numerycznych formatów wyjściowych. Ten
flaga działa tylko wtedy, gdy szerokość pola jest większa niż wartość do wydrukowania.

' Pojedynczy znak cudzysłowu instruuje gapić się aby wstawić separator tysięcy w ustawieniach regionalnych
znak na liczby dziesiętne, a także użyć kropki dziesiętnej lokalizacji
znak z formatami zmiennoprzecinkowymi. Wymaga to poprawnej obsługi lokalizacji w
biblioteka C oraz w definicji aktualnego locale.

szerokość Pole powinno być wypełnione do tej szerokości. Pole jest zwykle wypełnione
spacje. Z 0 flaga jest wypełniona zerami.

.poprzedni Liczba określająca precyzję używaną podczas drukowania. Dla %e, %E, %f i
%F, formaty, określa liczbę cyfr, które chcesz wydrukować po prawej stronie
kropka dziesiętna. Dla %g, %G formatów, określa maksymalną liczbę
cyfry znaczące. Dla %d, %i, %o, %u, %x, %X formaty, określa
minimalna liczba cyfr do wydrukowania. Do %s, określa maksymalną liczbę
znaków z ciągu, który powinien zostać wydrukowany.

Dynamika szerokość i poprzedni możliwości ISO C printf() obsługiwane są procedury. A *
zamiast szerokość or poprzedni specyfikacje powodują, że ich wartości są pobierane z
lista argumentów do printf or sprintf(). Aby użyć specyfikatora pozycyjnego z dynamicznym
szerokość lub precyzja, podaj liczyć$ po * w ciągu formatu. Na przykład,
„%3$*2$.*1$s”.

Specjalny filet nazwy
Podczas przekierowywania we/wy z dowolnego miejsca or printf do pliku lub przez pobierz linię z
file, gapić się rozpoznaje wewnętrznie pewne specjalne nazwy plików. Te nazwy plików umożliwiają dostęp
otworzyć deskryptory plików odziedziczone z gapić sięproces nadrzędny (zwykle powłoka). Te
nazwy plików mogą być również używane w wierszu poleceń do nazywania plików danych. Nazwy plików to:

- Wejście standardowe.

/dev/stdin Wejście standardowe.

/dev/stout Wyjście standardowe.

/dev/stderr Standardowe wyjście błędu.

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

Są one szczególnie przydatne w przypadku komunikatów o błędach. Na przykład:

"Ty dmuchnął to!" > "/dev/stderr"

podczas gdy inaczej musiałbyś użyć

"Ty dmuchnął to!" | "Kot 1>&2"

Następujące specjalne nazwy plików mogą być używane z |& operator współprocesu do tworzenia
Połączenia sieciowe TCP/IP:

/net/tcp/port/rhost/raport
/net4/tcp/port/rhost/raport
/net6/tcp/port/rhost/raport
Pliki do połączenia TCP/IP na porcie lokalnym port do zdalnego hosta rhost na zdalnym
Port raport. Użyj portu 0 aby system wybrał port. Posługiwać się /inet4 zmusić
połączenie IPv4 oraz /inet6 aby wymusić połączenie IPv6. Równina /inet używa
domyślny system (najprawdopodobniej IPv4).

/inet/udp/port/rhost/raport
/inet4/udp/port/rhost/raport
/inet6/udp/port/rhost/raport
Podobny, ale użyj UDP/IP zamiast TCP/IP.

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

atan2(y, x) Zwróć arcus tangens z y / x w radianach.

sałata(expr) Zwróć cosinus expr, który jest w radianach.

exp (expr) Funkcja wykładnicza.

int (expr) Obetnij do liczby całkowitej.

Dziennik(expr) Funkcja logarytmu naturalnego.

skraj() Zwróć losową liczbę N, między 0 a 1, tak że 0 ≤ N <1.

grzech(expr) Zwróć sinus expr, który jest w radianach.

sqrt(expr) Zwróć pierwiastek kwadratowy z expr.

cukierek ([expr]) Zastosowanie expr jako nowe ziarno generatora liczb losowych. Jeśli nie expr is
pod warunkiem, użyj pory dnia. Zwróć poprzednie ziarno na losowe
generator liczb.

sznur Funkcje
Gapić się ma następujące wbudowane funkcje ciągów:

rodzaj(s [, d [, w jaki sposób] ]) Zwróć liczbę elementów w tablicy źródłowej s. Sortuj
zawartość s za pomocą gapić sięnormalne zasady porównywania wartości, oraz
zastąpić indeksy posortowanych wartości s z sekwencyjnym
liczby całkowite zaczynające się od 1. Jeśli opcjonalna tablica docelowa d is
określony, pierwszy duplikat s najnowszych d, a następnie sortuj d, pozostawiając
indeksy tablicy źródłowej s bez zmian. Opcjonalny ciąg w jaki sposób
kontroluje kierunek i tryb porównania. Prawidłowe wartości dla
w jaki sposób czy któryś z ciągów jest ważny dla PROCINFO["posortowane_w"]. To
może być również nazwą funkcji porównującej zdefiniowanej przez użytkownika jako
opisane w PROCINFO["posortowane_w"].

Asortyment (s [, d [, w jaki sposób] ])
Zwróć liczbę elementów w tablicy źródłowej s. Zachowanie
jest taki sam jak w przypadku rodzaj(), z tą różnicą, że tablica Wskaźniki jest
używane do sortowania, a nie wartości tablicy. Po zakończeniu tablica to
indeksowane numerycznie, a wartości odpowiadają wartościom oryginału
indeksy. Oryginalne wartości są tracone; w ten sposób zapewnić sekundę
tablicy, jeśli chcesz zachować oryginał. Celem
opcjonalny ciąg w jaki sposób jest taki sam, jak opisano w rodzaj() powyżej.

rodzaj(r, s, h [, t]) Wyszukaj ciąg docelowy t dla dopasowań wyrażenia regularnego
r. Jeśli h jest ciągiem zaczynającym się od g or G, a następnie zamień wszystkie
mecze z r w s. W przeciwnym razie, h to liczba wskazująca, która
mecz z r zamienić. Jeśli t nie jest dostarczany, użyj $0 zamiast.
W tekście zastępczym s, sekwencja \n, Gdzie n jest cyfrą
od 1 do 9, może służyć do wskazania tylko dopasowanego tekstu
dotychczasowy n'-te podwyrażenie w nawiasach. Sekwencja \0 reprezentuje
cały dopasowany tekst, podobnie jak znak &. w odróżnieniu pod()
i gsub(), zmodyfikowany ciąg jest zwracany jako wynik
funkcja, a oryginalny ciąg docelowy to nie zmianie.

gsub(r, s [, t]) Dla każdego podciągu pasującego do wyrażenia regularnego r w strunie
t, zastąp ciąg si zwróć liczbę
substytucje. Jeśli t nie jest dostarczany, użyj $0. &
tekst zastępczy jest zastępowany tekstem, który był faktycznie
dopasowane. Posługiwać się \& dostać dosłowne &. (Musi być wpisany jako
"\\&"; widzieć GAPIĆ SIĘ: Efektywne AWK Programowanie dla pełniejszej dyskusji
zasad dla &'s i odwrotne ukośniki w tekście zastępującym
pod(), gsub(), gensub().)

indeks(s, t) Zwróć indeks ciągu t w strunie slub 0 jeśli t nie jest
obecny. (To oznacza, że ​​indeksy znaków zaczynają się od jedności).
jest krytycznym błędem używania stałego wyrażenia regularnego dla t.

długość([s]) Zwróć długość ciągu s, czyli długość $0 if s nie jest
dostarczony. Jako niestandardowe rozszerzenie, z argumentem tablicowym,
długość() zwraca liczbę elementów w tablicy.

mecz(s, r [, a]) Zwróć pozycję w s gdzie wyrażenie regularne r występuje lub
0 jeśli r nie występuje i ustaw wartości START i DŁUGOŚĆ.
Zauważ, że kolejność argumentów jest taka sama jak dla ~ operator:
str ~ re. Jeśli tablica a jest zapewniony, a jest wyczyszczony, a następnie elementy
Od 1 do n są wypełnione porcjami s pasujące do
odpowiadające podwyrażenie w nawiasach w r. Zerowy element
of a zawiera część s dopasowane przez cały regularny
wyrażenie r. Subskrypcje a[n, "początek"], a[n, "długość"]
podać indeks początkowy odpowiednio w łańcuchu i długości,
każdego pasującego podciągu.

patsplit (s, a [, r [, sepsy] ])
Podziel strunę s do tablicy a i tablica separatorów sepsy
na wyrażeniu regularnym ri zwróć liczbę pól.
Wartości elementów są częściami s to pasowało r. Wartość
wrzesień [i] to separator, który pojawił się przed a[i+1]. Jeśli r
jest pominięty, FPAT jest używany zamiast tego. Tablice a i sepsy jest
wyczyszczone jako pierwsze. Podział działa identycznie jak podział na pola
w FPAT, opisane powyżej.

podział(s, a [, r [, sepsy] ])
Podziel strunę s do tablicy a i tablica separatorów sepsy
na wyrażeniu regularnym ri zwróć liczbę pól. Jeśli
r jest pominięty, FS jest używany zamiast tego. Tablice a i sepsy jest
wyczyszczone jako pierwsze. wrzesień [i] czy separator pól jest dopasowany przez r
pomiędzy a[i] i a[i+1]. Jeśli r jest pojedynczą spacją, a następnie wiodącym
białe znaki w s przechodzi do dodatkowego elementu tablicy wrz[0] i
końcowe białe znaki trafiają do dodatkowego elementu tablicy wrzesień [n],
gdzie n jest wartością zwracaną przez podział(s, a, r, sepsy). Rozdzielać
zachowuje się identycznie jak dzielenie pól, opisane powyżej.

sprintf (fmt, lista-ekspresów) lista-ekspresów według fmti zwróć wynikowy ciąg.

strton (str) Zbadać stri zwróć jego wartość liczbową. Jeśli str zaczyna się od
prowadzący 0, traktuj ją jako liczbę ósemkową. Jeśli str zaczyna się od
prowadzący 0x or 0X, traktuj ją jako liczbę szesnastkową. W przeciwnym razie,
załóżmy, że jest to liczba dziesiętna.

pod(r, s [, t]) Tak jak gsub(), ale zamień tylko pierwszy pasujący podciąg.

podstr(s, i [, n]) Zwróć co najwyżej n-podciąg znaków z s zaczynając i. Jeśli n
jest pominięty, użyj reszty s.

obniżyć(str) Zwróć kopię ciągu str, ze wszystkimi wielkimi literami
in str przetłumaczone na ich odpowiednie odpowiedniki pisane małymi literami.
Znaki inne niż alfabetyczne pozostają niezmienione.

cylinder (str) Zwróć kopię ciągu str, ze wszystkimi małymi literami
in str przetłumaczone na ich odpowiednie odpowiedniki pisane wielkimi literami.
Znaki inne niż alfabetyczne pozostają niezmienione.

Gapić się obsługuje wiele bajtów. To znaczy że indeks(), długość(), substr() i mecz() cała praca
pod względem znaków, a nie bajtów.

Czas Funkcje
Ponieważ jednym z podstawowych zastosowań programów AWK jest przetwarzanie plików dzienników zawierających czas
informacje o pieczątce, gapić się udostępnia następujące funkcje uzyskiwania znaczników czasu i
ich formatowanie.

mktime(dataspec)
wieża dataspec do znacznika czasu o tej samej formie, co zwrócone przez czas systemowy(),
zwróć wynik. ten dataspec jest ciągiem postaci RRRR MM DD HH MM SS[
czas letni]. Zawartość ciągu składa się z sześciu lub siedmiu liczb reprezentujących
odpowiednio pełny rok, w tym wiek, miesiąc od 1 do 12, dzień
miesiąc od 1 do 31, godzina dnia od 0 do 23, minuta od 0 do
59, druga od 0 do 60 i opcjonalna flaga czasu letniego. Wartości
z tych liczb nie musi mieścić się w określonych przedziałach; na przykład godzina
-1 oznacza 1 godzinę przed północą. Kalendarz gregoriański pochodzenia zerowego to
założono, rok 0 poprzedza rok 1, a rok -1 poprzedza rok 0. Czas wynosi
zakłada się, że znajduje się w lokalnej strefie czasowej. Jeśli flaga czasu letniego jest dodatnia,
przyjmuje się, że czas to czas letni; jeśli zero, przyjmuje się, że czas
być czasem standardowym; a jeśli ujemna (domyślnie), mktime() próby ustalenia
czy czas letni obowiązuje przez określony czas. Jeśli dataspec
nie zawiera wystarczającej ilości elementów lub jeśli wynikowy czas jest poza zakresem,
mktime() zwraca -1.

strftime([format [, znak czasu[, flaga UTC]]])
utworzony znak czasu zgodnie ze specyfikacją w format. Jeśli flaga UTC is
obecny i niezerowy lub niezerowy, wynik jest w UTC, w przeciwnym razie wynik
jest w czasie lokalnym. ten znak czasu powinien mieć taką samą formę, jak zwrócony przez
czas systemowy(). Jeśli znak czasu brakuje, używana jest aktualna pora dnia. Jeśli format
brakuje domyślnego formatu odpowiadającego wyjściu dane(1) jest używany. ten
domyślny format jest dostępny w PROCINFO["strftime"]. Zobacz specyfikację dla
dotychczasowy strftime() funkcja w ISO C dla gwarantowanych konwersji formatu
być dostępnym.

czas systemowy() Zwróć bieżącą porę dnia jako liczbę sekund od Epoki
(1970-01-01 00:00:00 UTC w systemach POSIX).

Bit Manipulacje Funkcje
Gapić się dostarcza następujące funkcje manipulacji bitami. Działają poprzez konwersję podwójnie
precyzyjne wartości zmiennoprzecinkowe do uintmax_t liczb całkowitych, wykonując operację, a następnie
konwertowanie wyniku z powrotem na zmiennoprzecinkowy. Funkcje to:

oraz(v1, v2 [,...]) Zwróć bitowe AND wartości podanych na liście argumentów.
Muszą być co najmniej dwa.

komplet (val) Zwróć bitowe uzupełnienie val.

lprzesunięcie(val, liczyć) Zwróć wartość val, przesunięty w lewo o liczyć bitów.

lub(v1, v2 [,...]) Zwróć bitowe OR wartości podanych na liście argumentów.
Muszą być co najmniej dwa.

przesunięcie w prawo (val, liczyć) Zwróć wartość val, przesunięty w prawo o liczyć bitów.

xor(v1, v2 [,...]) Zwróć bitowy XOR wartości podanych na liście argumentów.
Muszą być co najmniej dwa.

Rodzaj Nieruchomości Funkcjonować
Poniższa funkcja jest przeznaczona do użytku z tablicami wielowymiarowymi.

itablica(x)
Zwróć prawda, jeśli x jest tablicą, w przeciwnym razie false.

Umiędzynarodowienie Funkcje
Następujące funkcje mogą być użyte z twojego programu AWK do tłumaczenia łańcuchów:
W czasie wykonywania. Aby uzyskać szczegółowe informacje, zobacz GAPIĆ SIĘ: Efektywne AWK Programowanie.

domena_tekstu powiązania (katalog [, domena])
Określ katalog, w którym gapić się szuka .gmo pliki, na wypadek, gdyby nie lub
nie mogą być umieszczone w "standardowych" lokalizacjach (np. podczas testowania). Wraca
katalog, w którym domena jest „związany”.
Domyślny domena jest wartością DOMENA TEKSTU. Jeśli katalog jest pustym ciągiem
(""), następnie powiąż domenętekstową() zwraca aktualne powiązanie dla danego domena.

dcgettext(ciąg [, domena [, kategoria]])
Zwróć tłumaczenie ciąg w domenie tekstowej domena dla kategorii lokalizacji
kategoria. Domyślna wartość dla domena to aktualna wartość DOMENA TEKSTU,
wartość domyślna dla kategoria is „LC_MESSAGES”.
Jeśli podasz wartość dla kategoria, musi to być ciąg równy jednemu ze znanych
kategorie regionalne opisane w GAPIĆ SIĘ: Efektywne AWK Programowanie. Musisz też
podać domenę tekstową. Posługiwać się DOMENA TEKSTU jeśli chcesz korzystać z obecnej domeny.

dcngettext(string1, string2, numer [, domena [, kategoria]])
Zwróć liczbę mnogą używaną dla numer tłumaczenia string1 i string2 in
domena tekstowa domena dla kategorii lokalizacji kategoria. Domyślna wartość dla domena is
aktualna wartość DOMENA TEKSTU. Domyślna wartość dla kategoria is „LC_MESSAGES”.
Jeśli podasz wartość dla kategoria, musi to być ciąg równy jednemu ze znanych
kategorie regionalne opisane w GAPIĆ SIĘ: Efektywne AWK Programowanie. Musisz też
podać domenę tekstową. Posługiwać się DOMENA TEKSTU jeśli chcesz korzystać z obecnej domeny.

OKREŚLONY PRZEZ UŻYTKOWNIKA FUNKCJE


Funkcje w AWK są zdefiniowane w następujący sposób:

funkcjonować Nazwa(parametr podstęp) { oświadczenia }

Funkcje są wykonywane, gdy są wywoływane z wyrażeń we wzorcach lub
działania. Rzeczywiste parametry podane w wywołaniu funkcji są używane do tworzenia instancji
parametry formalne zadeklarowane w funkcji. Tablice są przekazywane przez odniesienie, inne
zmienne są przekazywane przez wartość.

Ponieważ funkcje nie były pierwotnie częścią języka AWK, przepis dla local
zmienne są raczej niezgrabne: są deklarowane jako dodatkowe parametry na liście parametrów.
Konwencja polega na oddzieleniu zmiennych lokalnych od rzeczywistych parametrów przez dodatkowe spacje w
lista parametrów. Na przykład:

funkcjonować f(p, q, a, b) # a i b jest miejscowy
{
...
}

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

Lewy nawias w wywołaniu funkcji jest wymagany, aby natychmiast następować po funkcji
nazwa, bez żadnych odstępów. Pozwala to uniknąć niejednoznaczności składniowej z
Operator łączenia. To ograniczenie nie dotyczy wymienionych funkcji wbudowanych
powyżej.

Funkcje mogą wywoływać się nawzajem i mogą być rekurencyjne. Parametry funkcji używane jako lokalne
zmienne są inicjowane do łańcucha null i liczby zero po wywołaniu funkcji.

Zastosowanie powrót expr zwrócić wartość z funkcji. Zwracana wartość jest niezdefiniowana, jeśli nie
wartość jest podana, lub jeśli funkcja powraca przez „opadnięcie” końca.

Jak gapić się rozszerzenie, funkcje mogą być wywoływane pośrednio. Aby to zrobić, przypisz nazwę
funkcja, która ma być wywołana, jako ciąg, do zmiennej. Następnie użyj zmiennej tak, jakby to
były nazwą funkcji z przedrostkiem an @ znak, jak tak:
funkcjonować mojafunkcja()
{
„moja funkcja” nazywa"
...
}

{ ...
the_funkcja = "moja funkcja"
@funkcja() # wezwanie przez the_funkcja do mojafunkcja
...
}
Od wersji 4.1.2 działa to z funkcjami zdefiniowanymi przez użytkownika, funkcjami wbudowanymi i
funkcje rozszerzeń.

If --szarpie dostarczono, gapić się ostrzega o wywołaniach niezdefiniowanych funkcji w czasie parsowania,
zamiast w czasie wykonywania. Wywołanie niezdefiniowanej funkcji w czasie wykonywania jest błędem krytycznym.

Słowo funkcjonować może być stosowany zamiast funkcjonować, chociaż jest to przestarzałe.

DYNAMICZNIE ŁADOWANIE NOWOŚĆ FUNKCJE


Możesz dynamicznie dodawać nowe wbudowane funkcje do biegania gapić się tłumacz z
@Załaduj oświadczenie. Pełne szczegóły wykraczają poza zakres tej strony podręcznika; zobaczyć GAPIĆ SIĘ:
Efektywne AWK Programowanie.

SYGNAŁY


Połączenia gapić się profiler akceptuje dwa sygnały. SIGUSR1 powoduje zrzucenie profilu i funkcji
wywołanie stosu do pliku profilu, który jest albo awkprof.out, lub jakikolwiek plik został nazwany
z --profil opcja. Następnie kontynuuje działanie. ZGŁOSZENIE Przyczyny gapić się zrzucić
profil i stos wywołań funkcji, a następnie zakończ.

UMIĘDZYNARODOWIENIE


Stałe łańcuchowe to sekwencje znaków ujęte w podwójne cudzysłowy. W języku innym niż angielski
środowiska mówiące, w programie AWK można oznaczyć ciągi znaków jako wymagające
tłumaczenie na lokalny język naturalny. Takie ciągi są oznaczone w programie AWK symbolem
wiodący podkreślnik („_”). Na przykład,

gapić się 'ZACZYNAĆ { "dzień dobry, świat" }'

zawsze drukuje Halo, świat. Ale,

gapić się 'ZACZYNAĆ { _"Witaj, świat" }'

może wydrukować bonjour, monde we Francji.

Tworzenie i uruchamianie lokalizowalnego programu AWK składa się z kilku etapów.

1. Dodaj ZACZYNAĆ akcja, aby przypisać wartość do DOMENA TEKSTU zmienna do ustawienia domeny tekstowej
na nazwę związaną z Twoim programem:

ZACZYNAĆ { DOMENA TEKSTU = "mojprog" }

To pozwala gapić się znaleźć .gmo plik powiązany z Twoim programem. Bez tego
krok, gapić się używa wiadomości domena tekstowa, która prawdopodobnie nie zawiera tłumaczeń
dla twojego programu.

2. Zaznacz wszystkie ciągi, które mają zostać przetłumaczone, z wiodącymi podkreślnikami.

3. W razie potrzeby użyj dcgettext() i / lub powiąż domenętekstową() funkcje w Twoim programie,
odpowiednio.

4. run gapić się --gen-pot -f mójprog.awk > mójprog.pot wygenerować .garnek plik dla twojego
program.

5. Zapewnij odpowiednie tłumaczenia oraz zbuduj i zainstaluj odpowiednie .gmo akta.

Cechy internacjonalizacji zostały szczegółowo opisane w GAPIĆ SIĘ: Efektywne AWK
Programowanie.

POSIX ZGODNOŚĆ


Główny cel dla gapić się jest kompatybilność ze standardem POSIX, a także z
najnowsza wersja Briana Kernighana Awk. Do końca, gapić się zawiera następujące elementy
widoczne dla użytkownika funkcje, które nie są opisane w książce AWK, ale są częścią Brian
Wersja Kernighana Awki są w standardzie POSIX.

Książka wskazuje, że przypisanie zmiennej wiersza poleceń ma miejsce, gdy: Awk inaczej
otwórz argument jako plik, który jest po ZACZYNAĆ reguła jest wykonywana. Jednak w
we wcześniejszych implementacjach, gdy takie przypisanie pojawiło się przed jakimikolwiek nazwami plików,
przydział by się zdarzył zanim dotychczasowy ZACZYNAĆ reguła została uruchomiona. Aplikacje zaczęły zależeć od
ta cecha." Kiedy Awk został zmieniony, aby pasował do jego dokumentacji, -v opcja
przypisywanie zmiennych przed dodaniem wykonania programu w celu dostosowania aplikacji, które:
zależało od starego zachowania. (Ta funkcja została uzgodniona przez obie firmy Bell
Laboratoria i programiści GNU).

Przetwarzając argumenty, gapić się używa specjalnej opcji „--”, aby zasygnalizować koniec
argumenty. W trybie zgodności ostrzega, ale poza tym ignoruje niezdefiniowane opcje.
W normalnym działaniu takie argumenty są przekazywane do programu AWK w celu przetworzenia.

Książka AWK nie definiuje wartości zwracanej przez srand(). Standard POSIX to ma
zwróć ziarno, którego używał, aby umożliwić śledzenie sekwencji liczb losowych.
W związku z tym srand() in gapić się zwraca również swoje aktualne ziarno.

Inne nowe funkcje to: Korzystanie z wielu -f opcje (z MKS Awk); OTACZAĆ szyk;
dotychczasowy \a, \v sekwencje specjalne (zrobione pierwotnie w gapić się i wrócił do dzwonu
Wersja laboratoryjna); ten obniżyć() i nakładka() wbudowane funkcje (z dzwonka
Wersja laboratoryjna); oraz specyfikacje konwersji ISO C w printf (zrobione najpierw w
wersja Bell Laboratories).

HISTORYCZNY ROZWIĄZANIA


Jest jedna cecha historycznych implementacji AWK, która: gapić się obsługuje: Jest to możliwe
zadzwonić do długość() wbudowana funkcja nie tylko bez argumentu, ale nawet bez
zdanie wtrącone! Zatem,

a = długość # Święty Algol 60, Ordynans!

jest taki sam jak jeden z

a = długość()
a = długość($0)

Korzystanie z tej funkcji jest kiepską praktyką i gapić się wyświetla ostrzeżenie o jego użyciu, jeśli --szarpie is
określone w wierszu poleceń.

GNU ROZSZERZENIA


Gapić się ma zbyt dużą liczbę rozszerzeń do POSIX Awk. Są one opisane w tym
Sekcja. Wszystkie opisane tutaj rozszerzenia można wyłączyć, wywołując gapić się z
--tradycyjny or --posiks opcje.

Następujące cechy gapić się nie są dostępne w POSIX Awk.

· Żadne wyszukiwanie ścieżki nie jest wykonywane dla plików nazwanych przez -f opcja. Dlatego też ŚCIEŻKA AWK
zmienna środowiskowa nie jest wyjątkowa.

· Nie ma możliwości włączenia plików (gapić się's @włączać mechanizm).

· Nie ma możliwości dynamicznego dodawania nowych funkcji napisanych w C (gapić się's @Załaduj
mechanizm).

· \x sekwencja ewakuacyjna. (Wyłączone z --posiks.)

· Możliwość kontynuowania linii po ? i :. (Wyłączone z --posiks.)

· Stałe ósemkowe i szesnastkowe w programach AWK.

· ARGIND, TRYB BIN, BŁĄD, SZARPIE, RT i DOMENA TEKSTU zmienne nie są specjalne.

· IGNORUJ PRZYPADEK zmienna i jej skutki uboczne nie są dostępne.

· SZEROKOŚĆ POLA podział pól o zmiennej i stałej szerokości.

· FPAT dzielenie zmiennych i pól na podstawie wartości pól.

· PROCINFO tablica nie jest dostępna.

· Sposób użycia RS jako wyrażenie regularne.

· Specjalne nazwy plików dostępne dla przekierowań we/wy nie są rozpoznawane.

· |& operator do tworzenia koprocesów.

· POCZĄTEK i PLIK KOŃCOWY wzory specjalne nie są dostępne.

· Możliwość dzielenia poszczególnych znaków przy użyciu ciągu zerowego jako wartości FS,
i jako trzeci argument do rozdzielać().

· Opcjonalny czwarty argument do rozdzielać() aby otrzymać teksty separatorów.

· Opcjonalny drugi argument do blisko() funkcja.

· Opcjonalny trzeci argument do mecz() funkcja.

· Możliwość używania specyfikatorów pozycyjnych z printf i sprintf().

· Możliwość przekazania tablicy do długość().

· oraz(), rodzaj(), asortyment(), powiąż domenętekstową(), kompl(), dcgettext(), dcngettext(),
gensub(), lprzesunięcie(), mktime(), lub(), patrozdziel(), rshift(), strftime(), strtonum(),
czas systemowy() i xor() funkcje.

· Ciągi lokalizowalne.

Książka AWK nie definiuje wartości zwracanej przez blisko() funkcja. Gapić się's blisko()
zwraca wartość z fzamknij(3) lub pzamknij(3), podczas zamykania pliku wyjściowego lub potoku,
odpowiednio. Zwraca stan zakończenia procesu podczas zamykania potoku wejściowego. ten
wartość zwracana to -1, jeśli nazwany plik, potok lub współproces nie został otwarty za pomocą a
przekierowanie.

Kiedy gapić się jest wywoływany z --tradycyjny opcja, jeśli fs argument do -F Jest opcja
„t”, to FS jest ustawiony na znak tabulacji. Zwróć uwagę, że pisanie gapić się -F\t ... po prostu powoduje
powłoka do zacytowania „t” i nie przekazuje „\t” do -F opcja. Ponieważ to jest
raczej brzydki przypadek specjalny, nie jest to zachowanie domyślne. To zachowanie również nie
wystąpić, jeśli --posiks został określony. Aby naprawdę uzyskać znak tabulacji jako pole
separatora, najlepiej używać pojedynczych cudzysłowów: gapić się -F'\t' ....

ŚRODOWISKO ZMIENNE


Połączenia ŚCIEŻKA AWK zmienna środowiskowa może być użyta do dostarczenia listy katalogów, które gapić się
wyszukuje podczas wyszukiwania plików nazwanych przez -f, --plik, -i i --włączać opcje. Gdyby
początkowe wyszukiwanie kończy się niepowodzeniem, ścieżka jest przeszukiwana ponownie po dołączeniu awk do nazwy pliku.

Połączenia ŚCIEŻKA AWKLIB zmienna środowiskowa może być użyta do dostarczenia listy katalogów, które gapić się
wyszukuje podczas wyszukiwania plików nazwanych przez -l i --Załaduj opcje.

Połączenia GAWK_READ_TIMEOUT zmienna środowiskowa może być użyta do określenia limitu czasu w
milisekundy na odczyt danych wejściowych z terminala, rurociągu lub komunikacji dwukierunkowej, w tym
gniazda.

Do połączenia ze zdalnym hostem przez gniazdo, GAWK_SOCK_RETIES kontroluje liczbę
ponawia próby i GAWK_MSEC_SLEEP oraz odstęp między kolejnymi próbami. Interwał jest w
milisekundy. W systemach, które nie obsługują śpisz(3), wartość jest zaokrąglana w górę do an
całkowita liczba sekund.

If POSIXLY_CORRECT istnieje w środowisku, to gapić się zachowuje się dokładnie tak, jakby --posiks miał
zostały określone w wierszu poleceń. Jeśli --szarpie został określony, gapić się wystawia ostrzeżenie
wiadomość w tym celu.

EXIT STATUS


Jeśli wyjście instrukcja jest używana z wartością, wtedy gapić się wychodzi z podaną wartością numeryczną
do niego.

W przeciwnym razie, jeśli nie było problemów podczas realizacji, gapić się wyjścia z wartością C
stały WYJŚCIE_SUCCESS. Zwykle jest to zero.

Jeśli wystąpi błąd, gapić się wyjścia z wartością stałej C WYJŚCIE_BŁĄD. Jest
zwykle jeden.

If gapić się kończy działanie z powodu błędu krytycznego, kod zakończenia to 2. W systemach innych niż POSIX:
wartość może być odwzorowana na WYJŚCIE_BŁĄD.

WERSJA INFORMACJE


Ta strona podręcznika dokumentuje gapić sięWersja 4.1.

AUTORSKI


Oryginalna wersja UNIX Awk został zaprojektowany i wdrożony przez Alfreda Aho, Peter
Weinberger i Brian Kernighan z Bell Laboratories. Brian Kernighan kontynuuje
utrzymuj i ulepszaj go.

Paul Rubin i Jay Fenlason z Free Software Foundation napisali gapić się, aby być kompatybilnym
z oryginalną wersją Awk dystrybuowane w Siódmej Edycji UNIX. John Woods
wniósł szereg poprawek. David Trueman, z udziałem Arnolda Robbinsa,
zrobiony gapić się kompatybilny z nową wersją UNIX Awk. Arnold Robbins jest obecny
opiekun.

See GAPIĆ SIĘ: Efektywne AWK Programowanie aby uzyskać pełną listę współtwórców gapić się i jego
dokumentacja.

Zobacz README Plik w gapić się dystrybucja aktualnych informacji o opiekunach
i które porty są obecnie obsługiwane.

PLUSKWA RAPORTY


Jeśli znajdziesz błąd w gapić się, proszę wysłać e-mail na adres [email chroniony]. Proszę
zawierać twój system operacyjny i jego wersję, wersję gapić się (Od gapić się --wersja),
jakiego kompilatora C użyłeś do jego skompilowania oraz programu testowego i danych, które są tak małe jak
możliwe do odtworzenia problemu.

Przed wysłaniem raportu o błędzie wykonaj następujące czynności. Najpierw sprawdź, czy masz
najnowsza wersja gapić się. Wiele błędów (zwykle subtelnych) jest naprawianych przy każdym wydaniu,
a jeśli Twój jest nieaktualny, problem mógł już zostać rozwiązany. Po drugie, zobacz
jeśli ustawiasz zmienną środowiskową LC_ALL do LC_ALL=C powoduje, że rzeczy zachowują się tak, jak ty
oczekiwać. Jeśli tak, jest to problem z lokalizacją i może, ale nie musi, być błędem. Na koniec proszę
przeczytaj uważnie tę stronę podręcznika i podręcznik referencyjny, aby upewnić się, że to, co myślisz, jest
błąd naprawdę jest, a nie tylko dziwactwo w języku.

Cokolwiek robisz, rób NIE opublikuj raport o błędzie w comp.lang.awk. Podczas gapić się deweloperzy
od czasu do czasu czytaj tę grupę dyskusyjną, publikując raporty o błędach, istnieje niewiarygodny sposób zgłaszania
robaki. Zamiast tego prosimy o skorzystanie z adresów poczty elektronicznej podanych powyżej. Naprawdę.

Jeśli używasz systemu opartego na GNU/Linux lub BSD, możesz przesłać raport o błędzie do
sprzedawca twojej dystrybucji. W porządku, ale proszę o przesłanie kopii do urzędnika
adres e-mail, ponieważ nie ma gwarancji, że zgłoszenie błędu zostanie przekazane na adres
dotychczasowy gapić się opiekun.

Korzystaj z gawk online za pomocą usług onworks.net


Darmowe serwery i stacje robocze

Pobierz aplikacje Windows i Linux

Komendy systemu Linux

Ad