název
gawk - skenování a zpracování jazyka
Synopse
gawk Možnosti stylu POSIX nebo GNU -F programový soubor -- soubor …gawk Možnosti stylu POSIX nebo GNU -- programový text soubor … pgawk Možnosti stylu POSIX nebo GNU -F programový soubor -- soubor …pgawk Možnosti stylu POSIX nebo GNU -- programový text soubor … Gawk je implementací programovacího jazyka AWK GNU Project. Je v souladu s definicí jazyka v standardu POSIX 1003.2 Command Language and Utilities. Tato verze je zase založena na popisu v AWK programovací jazyk , Aho, Kernighan a Weinberger, s dalšími funkcemi, které se nacházejí ve verzi UNIX systému System V Release 4 awk . Gawk také poskytuje novější Bell Laboratories awk rozšíření a řadu rozšíření specifických pro GNU. Pgawk je profily verze gawk . Je totožný ve všech ohledech gawk , s výjimkou toho, že programy běží pomaleji a automaticky vytváří profil spouštění v souboru awkprof.out když je hotovo. Viz --profil níže. Příkazový řádek obsahuje volby do gawk samotný text programu AWK (pokud není dodán prostřednictvím -F nebo --soubor možnosti) a hodnoty, které mají být k dispozici v ARGC a ARGV předem definované proměnné AWK. Gawk Možnosti mohou být buď tradiční POSIX jednopísmenné možnosti, nebo dlouhé možnosti ve stylu GNU. Možnosti POSIX začínají jedním `` - '', zatímco dlouhé volby začínají `` - ''. Dlouhé možnosti jsou k dispozici jak pro funkce specifické pro GNU, tak pro funkce s mandátem POSIX. Podle standardu POSIX, gawk specifické volby jsou dodávány prostřednictvím argumentů do -W volba. Násobek -W Možnosti mohou být dodány každý -W má odpovídající dlouhou možnost, jak je uvedeno níže. Argumenty k dlouhým volbám jsou buď spojeny s volbou pomocí = znaménko, bez meziprostoru, nebo mohou být uvedeny v dalším argumentu příkazového řádku. Dlouhé možnosti mohou být zkráceny, pokud zkratka zůstává jedinečná. Gawk přijímá následující možnosti, které jsou uvedeny v abecedním pořadí. -F fs - separátor pole fs Použití fs pro oddělovač vstupního pole (hodnota FS předdefinovaná proměnná). -proti var = val --přiřadit var = val Přiřaďte hodnotu val k proměnné var , před spuštěním programu. Takové proměnné hodnoty jsou k dispozici pro ZAČÍT blok programu AWK. -F programový soubor --soubor programový soubor Přečtěte si zdroj programu AWK ze souboru programový soubor , namísto z prvního argumentu příkazového řádku. Násobek -F (nebo --soubor). -mf NNN -pan NNN Nastavte různé hodnoty paměti na hodnotu NNN . The F flag udává maximální počet polí a r flag nastavuje maximální velikost záznamu. Tyto dvě vlajky a -m jsou z Bell Research Laboratories verze UNIX awk . Oni jsou ignorováni gawk , od té doby gawk nemá žádné předem definované limity. -W compat -W tradiční --compat --tradiční Běžet kompatibilita režimu. V režimu kompatibility, gawk se chová stejně jako systém UNIX awk ; žádné uzly specifické pro GNU nejsou rozpoznány. Použití --tradiční je přednost před ostatními formami této možnosti. Vidět GNU EXTENSIONS, níže, pro více informací. -W copyleft -W autorská práva --copyleft --autorská práva Vytiskněte krátkou verzi zprávy o autorských právech GNU na standardní výstup a úspěšně ukončete. -W proměnné výpisu= soubor --dump-proměnné= soubor Vytiskněte seřazený seznam globálních proměnných, jejich typy a konečné hodnoty soubor . Jestli ne soubor je poskytován, gawk používá soubor s názvem awkvars.out v aktuálním adresáři. Seznam všech globálních proměnných je dobrý způsob, jak hledat typografické chyby ve vašich programech. Tuto možnost použijte také tehdy, pokud máte velký program s mnoha funkcemi a chcete si být jisti, že vaše funkce neúmyslně nepoužívají globální proměnné, které jste chtěli být lokální. (Je to obzvláště jednoduchá chyba při použití jednoduchých názvů proměnných, jako je i, j, a tak dále.) -W pomoc -W použití --Pomoc --používání Tiskněte relativně krátký souhrn dostupných možností na standardním výstupu. (Podle GNU kódovací standardy , tyto možnosti způsobí okamžitý a úspěšný odchod.) -W nečistoty= fatální --lint= fatální Poskytujte varování o konstruktech, které jsou pochybné nebo nepřeváděné jiným implementacímAWK. S volitelným argumentem fatální, výstrahy s vlákny se stanou smrtícími chybami. To může být drastické, ale jeho použití jistě podpoří vývoj čistších programů AWK. -W stará - starý Poskytujte varování o konstruktech, které nejsou přenosné na původní verzi systému Unix awk . -W gen-po - gen-po Skenujte a analyzujte program AWK a generujte GNU .po formát souboru na standardním výstupu se záznamy pro všechny lokalizovatelné řetězce v programu. Samotný program není spuštěn. Viz GNU gettext distribuce pro více informací o .po soubory. -W desítkové data - data za desetinnou čárkou Rozpoznat osmi a hexadecimální hodnoty ve vstupních datech. Použijte tuto volbu velmi opatrně! -W posix --posix Toto se rozsvítí kompatibilita režim s následujícími dalšími omezeními: * X sekvence escape nejsou rozpoznány. * Pouze mezerník a tabulka fungují jako oddělovače polí FS je nastaven na jeden prostor, nový řádek není. * Nemůžete pokračovat po řádcích ? a :. * Synonymum funk pro toto klíčové slovo funkce není rozpoznán. * Operátoři ** a **= nelze použít namísto ^ a ^=. * The fflush () funkce není k dispozici. -W profilu= prof_file --profil= prof_file Odeslat profilová data do prof_file . Výchozí hodnota je awkprof.out. Při běhu s gawk , profil je jen `` docela tištěná '' verze programu. Při běhu s pgawk , profil obsahuje počty provedených příkazů v programu v levém okraji a počty voleb funkcí pro každou uživatelem definovanou funkci. -W opakování intervalu - interval Povolit použití intervalové výrazy v souladu s pravidelným výrazem (viz Pravidelné výrazy, níže). Intervalové výrazy nebyly tradičně k dispozici v jazyce AWK. Standard POSIX je přidal, aby je vytvořil awk a egrep vzájemně konzistentní. Nicméně jejich použití pravděpodobně naruší staré programy AWK, takže gawk poskytuje je pouze tehdy, jsou-li s touto volbou požadováni, nebo kdy --posix je zadán. -W zdroj programový text --zdroj programový text Použití programový text jako zdrojový kód programu AWK. Tato volba umožňuje snadné smíšení knihovních funkcí (používá se pomocí -F a --soubor možnosti) se zdrojovým kódem zadaným na příkazovém řádku. Je určen především pro střední až velké programy AWK používané ve skriptech shellu. -W verze --verze Vytiskněte informace o verzi této konkrétní kopie gawk na standardním výstupu. To je užitečné hlavně pro zjištění, zda aktuální kopie gawk na vašem systému je aktuální s ohledem na to, co šíří Nadace Free Software Foundation. To je také užitečné při hlášení chyb. (Podle GNU kódovací standardy , tyto možnosti způsobí okamžitý a úspěšný odchod.) -- Označte konec možností. To je užitečné pro umožnění dalších argumentů samotnému programu AWK, aby začínal znakem `` - ''. Jedná se hlavně o konzistenci s konvencí parsování argumentů používanou většinou ostatních programů POSIX. V režimu kompatibility jsou všechny další možnosti označeny jako neplatné, jinak jsou ignorovány. Během normálního provozu, pokud je dodán programový text, jsou v programu AWK předávány neznámé možnosti ARGV pole pro zpracování. To je obzvláště užitečné pro běh programů AWK pomocí mechanismu interpretátoru ``!! ''. VÝKON PROGRAMU AWK Program AWK se skládá ze sekvence příkazů vzorové akce a volitelných definic funkcí. vzor { prohlášení o akci }funkce název ( seznam parametrů ) { prohlášení }
Gawk nejprve přečte programový zdroj z programový soubor (y), pokud je uvedeno, z argumentů na --zdroj, nebo z prvního argumentu bez možnosti na příkazovém řádku. The -F a --zdroj Možnosti lze na příkazovém řádku použít několikrát. Gawk čte programový text jako všechny programový soubor a texty zdrojového příkazového řádku byly spojeny dohromady. To je užitečné pro vytváření knihoven funkcí AWK, aniž by bylo nutné je zahrnout do každého nového programu AWK, který je používá. Poskytuje také možnost kombinovat funkce knihovny s programy příkazového řádku. Proměnná prostředí AWKPATH specifikuje vyhledávací cestu, která se použije při hledání zdrojových souborů pojmenovaných pomocí -F volba. Pokud tato proměnná neexistuje, je výchozí cesta"/ usr / local / share / awk". (Skutečný adresář se může lišit v závislosti na tom, jakým způsobem gawk byl postaven a nainstalován.) Pokud je název souboru zadán -F volba obsahuje znak "` / '', není provedeno žádné vyhledávání. Gawk spustí programy AWK v následujícím pořadí. Za prvé, všechna proměnná přiřazení zadaná prostřednictvím -proti jsou provedeny. Další, gawk program sestaví do interního formuláře. Pak, gawk provede kód v souboru ZAČÍT blok (y) (pokud existuje) a potom pokračuje číst každý soubor pojmenovaný v ARGV pole. Pokud na příkazovém řádku nejsou žádné soubory pojmenované, gawk čte standardní vstup. Pokud má soubor na příkazovém řádku formulář var = val je považováno za proměnnou přiřazení. Proměnná var bude přiřazena hodnota val . (To se stane po každém ZAČÍT bloky byly spuštěny.) Přiřazení proměnné příkazového řádku je nejužitečnější pro dynamické přiřazení hodnot proměnným, které AWK používá k řízení toho, jak je vstup rozdělen do polí a záznamů. Je také užitečné pro řízení stavu, pokud je zapotřebí vícenásobných průchodů přes jediný datový soubor. Pokud hodnota určitého prvku ARGV je prázdný (''), gawk přeskočí přes něj. Pro každý záznam ve vstupu, gawk testy, zda se vůbec shoduje vzor v programu AWK. Pro každý vzorec, který se záznam shoduje, je přidružený akce je spuštěn. Vzory jsou testovány v pořadí, v jakém se vyskytují v programu. Konečně po vyčerpání veškerého vstupu, gawk provede kód v souboru KONEC blok (y) (pokud existuje). Proměnné AWK jsou dynamické; vzniká při prvním použití. Jejich hodnoty jsou buď čísla s plovoucí desetinnou čárkou, nebo řetězce, nebo obě, v závislosti na tom, jak jsou používány. AWK má také jednorozměrné pole; pole s více rozměry mohou být simulovány. Několik předdefinovaných proměnných je nastaveno jako běh programu; budou popsány podle potřeby a shrnuty níže. Obvykle jsou záznamy odděleny novými znaky. Můžete řídit, jak jsou záznamy odděleny přidáním hodnot k vestavěné proměnné RS. Li RS je libovolný znak, tento znak odděluje záznamy. V opačném případě, RS je regulární výraz. Text ve vstupu, který odpovídá tomuto regulárnímu výrazu, odděluje záznam. V režimu kompatibility se však pro oddělení záznamů používá pouze první znak řetězcové hodnoty. Li RS je nastaven na nulový řetězec, záznamy jsou odděleny prázdnými řádky. Když RS je nastaven na nulový řetězec, znak nového řádku vždy působí jako oddělovač polí, vedle jakékoliv hodnoty FS mohou mít. Jakmile se zaznamená každý vstupní záznam, gawk rozdělí záznam na pole , pomocí hodnoty FS variabilní jako oddělovač pole. Li FS je jeden znak, pole jsou odděleny tímto znakem. Li FS je nulový řetězec, pak se každý jednotlivý znak stává samostatným polem. V opačném případě, FS se očekává, že bude plně regulární výraz. Ve zvláštním případě FS je jeden prostor, pole jsou odděleny spuštěnými mezerami a / nebo záložkami a / nebo novými řádky. (Ale podívejte se na diskusi o --posix, níže). POZNÁMKA: Hodnota IGNOROVAT PŘÍPAD (viz dále) ovlivňuje také rozdělení polí FS je regulární výraz a jak jsou záznamy odděleny RS je regulární výraz. Pokud OBLAST POČTU proměnná je nastavena na seznam čísel oddělených mezerami, očekává se, že každé pole má pevnou šířku a gawk rozdělí záznam pomocí specifikovaných šířek. Hodnota FS je ignorována. Přiřazení nové hodnoty FS přepíše použití OBLAST POČTU, a obnoví výchozí chování. Každé pole ve vstupním záznamu může být odkazováno na jeho polohu, $1, $2, a tak dále. $0 je celý záznam. Pole nemusí být odkazována na konstanty: n = 5tisk $ n vytiskne páté pole ve vstupním záznamu. Proměnná NF je nastaven na celkový počet polí ve vstupním záznamu. Odkazy na neexistující pole (tj. Pole po $ NF) produkují null-string. Přiřazení k neexistujícímu poli (např. $ (NF + 2) = 5) zvyšuje hodnotu NF, vytvoří jakékoliv pole s nulovým řetězcem jako jejich hodnotu a způsobí hodnotu $0 který má být přepočten, přičemž pole jsou odděleny hodnotou OFS. Odkazy na negativní očíslovaná pole způsobují fatální chybu. Decrementing NF způsobí ztrátu hodnot polí za novou hodnotu a hodnotu hodnoty $0 který má být přepočten, přičemž pole jsou odděleny hodnotou OFS. Přiřazení hodnoty stávajícímu poli způsobí, že celý záznam bude znovu sestaven $0 je odkazováno. Podobně přiřazení hodnoty $0 způsobuje změnu záznamu a vytváření nových hodnot pro tato pole. Gawk vestavěné proměnné jsou: ARGC Počet argumentů příkazového řádku (neobsahuje volby pro gawk , nebo zdroj programu). ARGIND Index v ARGV aktuálního souboru, který se zpracovává. ARGV Array argumentů příkazového řádku. Pole je indexováno od 0 do ARGC - 1. dynamicky měnit obsah ARGV mohou řídit soubory používané pro data. BINMODE U systémů, které nejsou POSIX, určuje použití "binárního" režimu pro všechny soubory I / O. Číselné hodnoty 1, 2 nebo 3 specifikují, že vstupní soubory, výstupní soubory nebo všechny soubory by měly používat binární vstupy / výstupy. Hodnoty řetězce "r", nebo "w" že vstupní soubory nebo výstupní soubory by měly používat binární I / O. Hodnoty řetězce "rw" nebo "wr" určete, aby všechny soubory používaly binární vstupy / výstupy. Jakákoli jiná hodnota řetězce je považována za "rw", ale generuje varovnou zprávu. CONVFMT Formát konverze pro čísla, "% .6g", ve výchozím stavu. ENVIRON Pole obsahující hodnoty aktuálního prostředí. Pole je indexováno proměnnými prostředí, přičemž každý prvek je hodnotou proměnné (např.ENVIRON "HOME" možná / home / arnold). Změna tohoto pole neovlivní prostředí viděné programy, které gawk spouští přes přesměrování nebo Systém()funkce. ERRNO Pokud dojde k systémové chybě, provede se přesměrování getline, během čtení getline, nebo během zavřít(), pak ERRNO bude obsahovat řetězec popisující chybu. Hodnota je předmětem překladu v cizích jazycích. OBLAST POČTU Seznam šířky polí oddělený bílou oblastí. Když je nastaveno, gawk analyzuje vstup do polí s pevnou šířkou namísto použití hodnoty FS variabilní jako oddělovač pole. NÁZEV SOUBORU Název aktuálního vstupního souboru.Pokud na příkazovém řádku nejsou zadány žádné soubory, hodnota NÁZEV SOUBORU je `` - ''. Nicméně, NÁZEV SOUBORU je nedefinováno uvnitř ZAČÍT blok (pokud není nastaven getline). FNR Vstupní číslo záznamu v aktuálním vstupním souboru. FS Oddělovač vstupního pole, ve výchozím nastavení místo. Vidět Pole, výše. IGNOROVAT PŘÍPAD Řídí citlivost všech operací regulárního výrazu a řetězců. Li IGNOROVAT PŘÍPAD má nenulovou hodnotu, potom porovnává řetězce a odpovídá vzoru v pravidlech a rozděluje pole FS, záznam odděluje se RS, pravidelné výrazy se shodují s ~a !~, a gensub (), gsub (), index(), zápas(), rozdělit(), a sub() vestavěné funkce všechny ignorují případ při operacích regulárního výrazu. POZNÁMKA: Inkresování pole je ne postižené, ani není asort () funkce. Tak, pokud IGNOROVAT PŘÍPAD není rovna nule, / aB / odpovídá všem řetězcům "ab", "aB","Ab", a "AB". Stejně jako u všech proměnných AWK, počáteční hodnota IGNOROVAT PŘÍPAD je nula, takže všechny operace s regulárním výrazem a řetězcem obvykle odpovídají velikosti písmen. Pod Unixem se při ignorování případu používá znaková sada ISO 8859-1 Latin-1. LINT Poskytuje dynamické ovládání --lint v rámci programu AWK. Když je pravda, gawk vytiskne upozornění na vlákna. Když je falešná, není. Při přiřazení hodnoty řetězce "fatální", upozornění na vlákna se stávají smrtelnými chybami, stejně jako --lint = fatální. Jakákoli jiná skutečná hodnota právě vytiskne varování. NF Počet polí v aktuálním záznamu vstupu. NR Celkový počet zaznamenaných vstupních záznamů. OFMT Výstupní formát pro čísla, "% .6g", ve výchozím stavu. OFS Oddělovač výstupního pole, ve výchozím nastavení místo. ORS Výstupní záznamový oddělovač, ve výchozím nastavení nový řádek. PROCINFO Prvky tohoto pole poskytují přístup k informacím o běžícím programu AWK. Na některých systémech mohou být prvky v poli, "group1" přes "skupina n ' pro některé n , což je počet doplňkových skupin, které má proces. Použijte v operátor testovat tyto prvky. K dispozici jsou následující prvky: PROCINFO "egid" hodnota getegid (2) systémové volání. PROCINFO "euid" hodnota geteuid (2) systémové volání. PROCINFO "FS" "FS" pokud pole se dělí FS je platný, nebo "FIELDWIDTHS" pokud pole se dělí OBLAST POČTU je v platnosti. PROCINFO "gid" hodnota getgid (2) systémové volání. PROCINFO "pgrpid" ID skupiny procesů aktuálního procesu. PROCINFO "pid" ID procesu aktuálního procesu. PROCINFO "ppid" ID nadřazeného procesu aktuálního procesu. PROCINFO "uid" hodnota getuid (2) systémové volání. RS Separátor záznamu vstupu, ve výchozím nastavení nový řádek. RT Terminál záznamu. Gawk sady RT na vstupní text odpovídající danému znaku nebo regulárnímu výrazu RS. RSTART Index prvního znaku odpovídá zápas(); 0, pokud není shoda. (To znamená, že znakové indexy začínají na jednom.) RLENGTH Délka řetězce odpovídá zápas(); -1, pokud žádná shoda. SUBSEP Znak použitý k oddělení více indexů v prvcích pole, ve výchozím nastavení ' 034'. TEXTDOMAIN Textová doména programu AWK; použitý k nalezení lokalizovaných překladů pro řetězce programu. Políčka jsou přihlášena s výrazem mezi hranatými závorkami ( a ). Je-li výraz výrazem ( expr , expr …) pak indexový pořad je řetězec sestávající ze zřetězení hodnoty (řetězce) každého výrazu, odděleného hodnotou SUBSEP proměnná. Toto zařízení se používá k simulaci vícerozměrných polí. Například: i = "A"; j = "B"; k = "C"x i, j, k = "Ahoj, svět n" přiřadí řetězec "ahoj, svět n" k prvku pole X který je indexován řetězcem"A 034B 034C". Všechna pole v AWK jsou asociativní, tj. Indexovány hodnotami řetězce. Zvláštní operátor v může být použit v -li nebo zatímco prohlášení, zda pole má index skládající se z konkrétní hodnoty. li (vlna v poli) pole pro tisk val Pokud pole má více indexů, použijte (i, j) v poli. The v konstrukce může být také použita v a pro smyčku pro iteraci nad všemi prvky pole. Element může být odstraněn z pole pomocí vymazat prohlášení. The vymazat příkazu lze také použít k odstranění celého obsahu pole pouze zadáním názvu pole bez indexu. Proměnné a pole mohou být čísla (s plovoucí desetinnou čárkou) nebo řetězce nebo obojí. Jak je interpretována hodnota proměnné závisí na kontextu. Pokud se použije v číselném výrazu, bude se jednat o číslo, pokud se použije jako řetězec, bude se jednat o řetězec. Chcete-li vynutit, aby se proměnná považovala za číslo, přidejte do ní 0; vynutit jej, aby byl považován za řetězec, spojit jej s nulovým řetězcem. Když řetězec musí být převeden na číslo, konverze je provedena pomocí strtod (3). Číslo je převedeno na řetězec pomocí hodnoty CONVFMT jako formátovací řetězec pro sprintf (3) s číselnou hodnotou proměnné jako argumentu. Nicméně, i když všechna čísla v AWK jsou plovoucí bod, integrální hodnoty jsou vždy převedeny jako celá čísla. Tak, daný CONVFMT = "% 2.2f" a = 12 b = a "" proměnné b má hodnotu řetězce '12' a ne '12.00'. Gawk provádí porovnání takto: Jsou-li dvě proměnné numerické, porovnávají se numericky. Pokud je jedna hodnota číselná a druhá má hodnotu řetězce, která je "číselný řetězec", pak se porovnává také číselně. V opačném případě se číselná hodnota převede na řetězec a provede se porovnání řetězců. Dvě řetězce jsou samozřejmě porovnány jako struny. Všimněte si, že standard POSIX aplikuje pojem "číselný řetězec" všude, dokonce i na řetězcové konstanty. To je však jasně nesprávné a gawk to neudělá. (Naštěstí to je opraveno v další verzi tohoto standardu.) Všimněte si, že řetězcové konstanty, například '57', jsou ne číselné řetězce, jsou řetězcové konstanty. Myšlenka na "číselný řetězec" se vztahuje pouze na pole, getline vstup, NÁZEV SOUBORU, ARGV Prvky, ENVIRON prvky a prvky pole vytvořené rozdělit() které jsou číselné řetězce. Základní myšlenkou je to uživatelský vstup , a pouze uživatelský vstup, který vypadá číselně, by se měl zacházet tímto způsobem. Neinicializované proměnné mají číselnou hodnotu 0 a hodnotu řetězce "" (prázdný nebo prázdný řetězec). Počínaje verzí 3.1 gawk, ve zdrojovém kódu programu AWK můžete použít oktávové a hexadecimální konstanty ve stylu C. Například osmičková hodnota 011 se rovná desítkové hodnotě 9a hexadecimální hodnotu 0x11 se rovná desítkové hodnotě 17. Stringové konstanty v AWK jsou sekvence znaků uzavřených mezi dvojitými uvozovkami ('). Uvnitř řetězců jistě únikové sekvence jsou rozpoznány stejně jako v C. Jedná se o: \ Doslovné zpětné lomítko. A Znak "upozornění"; obvykle znak ASCII BEL. b backspace. F form-feed. n nový řádek. r návrat vozíku. t horizontální záložka. proti vertikální záložku. X hex číslic Znak reprezentovaný řetězcem hexadecimálních číslic následujících po X. Stejně jako v ANSIC jsou všechny následující hexadecimální číslice považovány za součást escape sekvence. (Tato funkce by nám měla říci něco o jazykovém návrhu výboru). Např. " x1B" je znak ASCIIESC (escape). ddd Znak reprezentovaný 1-, 2- nebo 3-místnou sekvencí osmičkových číslic. Např., ' 033' je znak ASCII ESC (escape). C Doslovná postava C . Únikové sekvence mohou být také použity v konstantních regulárních výrazech (např./ t f n r v / odpovídá znakům bílé znaky). V režimu kompatibility jsou znaky reprezentované osmičkovými a hexadecimálními escape sekvencemi zpracovány doslovně při použití v konstantách regulárního výrazu. Tím pádem, / a 52b / je ekvivalentní/ a * b /. AWK je jazykově orientovaný jazyk. Vzorek je na prvním místě a pak akce. Příkazy o činnosti jsou přiloženy { a }. Buď chybí vzorek nebo akce může chybět, ale samozřejmě ne obojí. Pokud vzorek chybí, provede se akce pro každý záznam vstupu. Chybějící akce je ekvivalentní { vytisknout } který vytiskne celý záznam. Komentáře začínají znakem `` # '' a pokračují až do konce řádku. Na oddělení příkazů lze použít prázdné řádky. Obvykle se výpis končí novým řádkem, nicméně není tomu tak u řádků končících písmeny ``, '', {, ?, :, &&, nebo ||. Linky končící v dělat nebo jiný mají také své prohlášení automaticky pokračovat na následujícím řádku. V ostatních případech může linka pokračovat tím, že ji ukončí znakem ', v takovém případě bude nový řádek ignorován. Několik výkazů může být umístěno na jeden řádek tím, že je oddělíte ``; ''. To se týká jak výroků uvnitř akční části páru vzorku-akce (obvyklého případu), tak samotných příkazů vzorové akce. Vzorů AWK může být jeden z následujících způsobů: ZAČÍT KONEC / regulární výraz / relační výraz vzor && vzor vzor || vzor vzor ? vzor : vzor ( vzor ) ! vzor vzor1 , vzor2 ZAČÍT a KONEC jsou dva speciální typy vzorků, které nejsou testovány na vstupu. Akční části všech ZAČÍT vzory jsou sloučeny, jako kdyby všechny výroky byly napsány v jediném ZAČÍT blok. Vykonávají se před čtením jakéhokoli vstupu. Podobně, všechny KONEC bloky jsou sloučeny a provedeny, když je veškerý vstup vyčerpán (nebo když je výstup prohlášení je spuštěno). ZAČÍT a KONEC vzory nelze kombinovat s jinými vzory v výrazových vzorech. ZAČÍT a KONEC vzory nemohou mít chybějící části akce. Pro / regulární výraz / vzory jsou přidružené příkazy provedeny pro každý vstupní záznam, který odpovídá regulárnímu výrazu. Pravidelné výrazy jsou stejné jako v egrep (1) a jsou shrnuty níže. A relační výraz může použít kterýkoliv z níže uvedených operátorů v sekci akce. Obecně testují, zda se některá pole shodují s některými regulárními výrazy. The &&, ||, a ! operátoři jsou logická AND, logická OR a logická NOT, respektive, jako v C. Provádějí zkratové vyhodnocení, stejně jako v C, a používají se pro kombinování primitivnějších výrazových vzorů. Stejně jako ve většině jazyků mohou být pro změnu pořadí vyhodnocení použity závorky. The ?: operátor je jako stejný operátor v C. Pokud je první vzorec pravdivý, pak vzor použitý pro testování je druhý vzor, jinak je to třetí. Pouze jeden z druhých a třetích modelů je vyhodnocen. The vzor1 , vzor2 forma výrazu se nazývá a rozsah . Shoduje se se všemi vstupními záznamy, které začínají záznamem, který odpovídá vzor1 , a pokračovat až do záznamu, který odpovídá vzor2 , včetně. Nekombinuje se žádným jiným výrazem. Pravidelné výrazy jsou rozšířené druhy nalezené v egrep . Jsou složeny z následujících znaků: C odpovídá non-metacharacter C . C odpovídá doslovnému charakteru C . . odpovídá libovolnému znaku počítaje v to nový řádek. ^ odpovídá začátku řetězce. $ odpovídá konci řetězce. abc … seznam znaků, odpovídá některému z znaků abc … . ^ abc … negovaný seznam znaků, odpovídá libovolnému znaku kromě abc … . r1 | r2 střídání: odpovídá buď r1 nebo r2 . r1r2 zřetězení: shody r1 , a pak r2 . r + odpovídá jednomu nebo více r 's. r * odpovídá nula nebo více r 's. r ? odpovídá nula nebo jedna r 's. ( r ) seskupování: shody r . r { n } r { n ,} r { n , m } Jedno nebo dvě čísla uvnitř rovnačky označují jeden intervalový výraz . Pokud je v závorce jedno číslo, je předchozí regulární výraz r se opakuje n časy. Pokud jsou dvě čísla oddělená čárkou, r se opakuje n na m časy. Pokud je jedno číslo následované čárkou, pak r se opakuje alespoň n časy. Intervalové výrazy jsou k dispozici pouze v případě, že jsou k dispozici --posix nebo - interval je zadán na příkazovém řádku. y odpovídá prázdnému řetězci buď na začátku, nebo na konci slova. B odpovídá prázdnému řetězci v rámci jednoho slova. < odpovídá prázdnému řetězci na začátku slova. > odpovídá prázdnému řetězci na konci slova. w odpovídá libovolnému slovu-složkovému znaku (písmeno, číslice nebo podtržítko). W odpovídá libovolnému znaku, který není slovní složkou. ` odpovídá prázdnému řetězci na začátku vyrovnávací paměti (řetězec). ' odpovídá prázdnému řetězci na konci vyrovnávací paměti. Sekvence úniků, které jsou platné v řetězcových konstantách (viz níže), platí také v regulárních výrazech. Třídy znaků jsou novou funkcí zavedenou v standardu POSIX. Třída znaků je speciální notace pro popis seznamů znaků, které mají specifický atribut, ale kde se skutečné znaky mohou lišit v jednotlivých zemích a / nebo z množiny znaků na znakovou sadu. Například pojem abecedního charakteru se liší v USA a ve Francii. Třída znaků je platná pouze v regulárním výrazu uvnitř závorky seznamu znaků. Znakové třídy se skládají z :klíčové slovo označující třídu a :. Třídy znaků definované standardem POSIX jsou: : alnum: Alfanumerické znaky. : alfa: Abecední znaky. :prázdný: Prostor nebo znaky tabulátoru. : cntrl: Ovládací prvky. :číslice: Číselné znaky. :graf: Znaky, které jsou tisknutelné i viditelné. (Prostor je tiskitelný, ale není viditelný, zatímco A je oba.) :dolní: Malé abecední znaky. :vytisknout: Tisknutelné znaky (znaky, které nejsou kontrolními znaky.) : bod: Interpunkční znaky (znaky, které nejsou písmeny, číslice, řídicí znaky nebo mezery). :prostor: Prostorové znaky (například mezeru, tabulátor a formfeed). :horní: Abecední znaky v horní části. : xdigit: Znaky, které jsou hexadecimální číslice. Například před standardem POSIX, aby odpovídaly alfanumerické znaky, byste museli napsat / A-Za-z0-9 /. Pokud by vaše znaková sada měla v sobě jiná abecední znaky, neodpovídalo by to, a pokud je vaše sada znaků sdružená odlišně od ASCII, nemusí to vůbec odpovídat alfanumerickým znakům ASCII. Pomocí tříd znaků POSIX můžete psát/ : alnum: /, a to odpovídá abecedním a číselným znakům v sadě znaků. V seznamu znaků se mohou objevit dvě další speciální sekvence. Ty se vztahují na znakové sady jiné než ASCII, které mohou mít jednotlivé symboly (nazývané uspořádání prvků ), které jsou reprezentovány více než jedním znakem, stejně jako několik znaků, které jsou ekvivalentní shromažďování , nebo třídění, účely. (Např. Ve francouzštině je ekvivalentní rovina `` e '' a ekvivalentní hrob).) Shodovat symboly Symbol řazení je vícenásobný znak pro porovnávání . a .. Například pokud ch je tedy srovnávací prvek .ch. je regulární výraz, který odpovídá tomuto prvku porovnávání ch je regulární výraz, který odpovídá buď C nebo h. Třídy ekvivalence Třída ekvivalence je název specifický pro daný jazyk pro seznam znaků, které jsou ekvivalentní. Název je přiložen = a =. Například jméno E může být použito k reprezentaci všech e, e, e a e. V tomto případě, = e = je regulární výraz, který odpovídá kterékoli z nich E, E', nebo e ". Tyto funkce jsou velmi cenné v doménách, které nejsou anglicky mluvící. Knihovna to funguje gawk Použití pro přizpůsobení regulárního výrazu v současnosti rozpoznává pouze třídy POSIX; nerozpoznávají srovnávací symboly nebo třídy ekvivalence. The y, B, <, >, w, W, `, a ' operátoři jsou specifické gawk ; jsou rozšířeními založenými na zařízeních knihoven regulárních výrazů GNU. Různé možnosti příkazového řádku řídí, jakým způsobem gawk interpretuje znaky v regulárních výrazech. Žádné možnosti Ve výchozím případě, gawk poskytují všechna zařízení POSIX regulárních výrazů a operátory regulárního výrazu GNU popsané výše. Intervalové výrazy však nejsou podporovány. --posix Jsou podporovány pouze regulární výrazy POSIX, operátoři GNU nejsou speciální. (Např., w odpovídá doslovně w). Intervalové výrazy jsou povoleny. --tradiční Tradiční Unix awk regulární výrazy jsou shodné. Operátoři GNU nejsou speciální, intervalové výrazy nejsou k dispozici a nejsou ani třídy znaků POSIX (: alnum: a tak dále). Znaky popsané osmičkovými a hexadecimálními sekvencemi escape jsou zacházeny doslovně, i když představují metacharactery s regulárním výrazem. - interval Povolit intervalové výrazy v regulárních výrazech, i když --tradiční byl poskytnut. Akční výkazy jsou přiloženy ve svincích, { a }. Prohlášení o akci se skládají z obvyklých přiřazených, podmíněných a smyčkových příkazů nalezených ve většině jazyků. Operátoři, řídící příkazy a vstupní / výstupní výkazy, které jsou k dispozici, jsou vzorované po těch v C. Provozovatelé v AWK jsou v pořadí klesající prioritou (…) Seskupování $ Odkaz na pole. ++ -- Přírůstek a zmenšování, jak prefix, tak postfix. ^ Exponentiace (** mohou být také použity a **= pro operátor přiřazení). + - ! Unary plus, unary mínus a logická negace. * / % Násobení, dělení a modul. + - Sčítání a odčítání. prostor Zřetězení řetězce. < > <= >= != == Pravidelní relační operátoři. ~ !~ Shoda s pravidelným výrazem, negovaná shoda. POZNÁMKA: Nepoužívejte konstantní regulární výraz (/ foo /) na levé straně a ~ nebo !~. Používejte pouze jednu na pravé straně. Výraz / foo / ~ exp má stejný význam jako (($ 0 ~ / foo /) ~ exp ). To je obvykle ne co bylo zamýšleno. v Členství v poli. && Logické AND. || Logické OR. ?: Podmínkový výraz C. Toto má formu expr1 ? expr2 : expr3 . Li expr1 je pravda, hodnota výrazu je expr2 , jinak to je expr3 . Pouze jeden expr2 a expr3 je vyhodnocena. = += -= *= /= %= ^= Úkol. Absolutní zadání ( var = hodnota ) a přiřazení operátorů (ostatní formuláře). Kontrolní výkazy jsou následující: pokud ( stav ) prohlášení jiný prohlášení zatímco ( stav ) prohlášení dělat prohlášení zatímco ( stav ) pro ( expr1 ; expr2 ; expr3 ) prohlášení pro ( var v pole ) prohlášení přestávka pokračovat vymazat pole index vymazat pole výstup výraz { prohlášení } Příkazy vstupu / výstupu jsou následující: zavřít( soubor , jak ) Zavřete soubor, potrubí nebo kooperační proces. Volitelný jak by měla být použita pouze při uzavření jednoho konce dvoucestné trubky do společného procesu. Musí to být také hodnota řetězce "na" nebo "z". getline Soubor $0 od dalšího záznamu o vstupu; soubor NF, NR, FNR. getline < soubor Soubor $0 od dalšího záznamu soubor ; soubor NF. getline var Soubor var od dalšího záznamu o vstupu; soubor NR, FNR. getline var < soubor Soubor var od dalšího záznamu soubor . příkaz | getline var Běh příkaz pipetujte výstup buď do $0 nebo var , jak je uvedeno výše. příkaz & getline var Běh příkaz jako společné zpracování potrubí výstup buď do $0 nebo var , jak je uvedeno výše. Společné procesy jsou a gawk rozšíření. další Zastavte zpracování aktuálního záznamu. Další vstupní záznam se přečte a zpracování začíná s prvním vzorkem v programu AWK. Je-li dosaženo konce vstupních dat, KONEC blok (y), pokud existují. nextfile Zastavte zpracování aktuálního vstupního souboru. Další čtení vstupního záznamu pochází z dalšího vstupního souboru. NÁZEV SOUBORU a ARGIND jsou aktualizovány, FNR je resetováno na hodnotu 1 a zpracování začíná na prvním místě v programu AWK. Je-li dosaženo konce vstupních dat, KONEC blok (y), pokud existují. vytisknout Vytiskne aktuální záznam. Výstupní záznam je ukončen hodnotou ORS proměnná. vytisknout expr-list Vytiskne výrazy. Každý výraz je oddělen od hodnoty OFS proměnná. Výstupní záznam je ukončen hodnotou ORS proměnná. vytisknout expr-list > soubor Vytiskne výrazy na soubor . Každý výraz je oddělen od hodnoty OFS proměnná. Výstupní záznam je ukončen hodnotou ORS proměnná. printf fmt, expr-seznam Formátovat a tisknout. printf fmt, expr-seznam > soubor Formátovat a tisknout soubor . Systém( cmd-line ) Proveďte příkaz cmd-line , a vrátí stav ukončení. (V systémech jiných než POSIX nemusí být k dispozici.) fflush ( soubor ) Spláchněte všechny vyrovnávací paměti spojené s otevřeným výstupním souborem nebo potrubím soubor . Li soubor chybí, pak je standardní výstup propláchnut. Li soubor je nulový řetězec, pak všechny otevřené výstupní soubory a potrubí mají vyprázdněné vyrovnávací paměti. K dispozici jsou další přesměrování výstupů vytisknout a printf. tisk … >> soubor připojuje výstup k soubor . tisk … | příkaz píše na trubce. tisk … | & příkaz odesílá data do společného procesu. The getline příkaz vrátí 0 na konec souboru a -1 na chybu. Po chybě, ERRNO obsahuje řetězec popisující problém. POZNÁMKA: Pokud používáte potrubí nebo společný proces getline, nebo od vytisknout nebo printf ve smyčce, ty musí použití zavřít() k vytvoření nových instancí příkazu. AWK automaticky neuzavírá potrubí nebo kooperační procesy při návratu EOF. AWK verze printf prohlášení a sprintf () (viz níže) akceptuje následující formáty specifikací konverzí: %C Znak ASCII. Pokud argument použitý pro %C je číselný, považuje se za znak a vytiskne. V opačném případě se argument předpokládá jako řetězec a vytiskne se pouze první znak tohoto řetězce. % d, % i Desetinné číslo (celé číslo). % e,% E Číslo s plovoucí částí formuláře - d.dddddde + - dd. The %E formátů E namísto E. %F Číslo s plovoucí částí formuláře - ddd.ddddddd. % g,% G Použití %E nebo %F konverze, podle toho, co je kratší, s nenávratnými nulami potlačeny. The%G formátů %E namísto %E. %Ó Nepodpísané osmičkové číslo (také celé číslo). % u Nepodpísané desítkové číslo (opět celé číslo). % s Řetězec znaků. % x,% X Nepodpísané hexadecimální číslo (celé číslo). The %X formátů A B C D E F namístoa B c d e f. %% Jediný % charakter; žádný argument není převeden. Volitelné další parametry mohou být mezi % a kontrolní písmeno: spočítat $ Použijte spočítat "argument v tomto bodě při formátování. Toto se nazývá a polohový specifikátor a je určena především pro použití v přeložených verzích formátovacích řetězců, nikoliv v původním textu programu AWK. Je to gawk rozšíření. - Výraz by měl být ve své oblasti opuštěn. prostor Pro číselné převody platí předpony kladné hodnoty s mezerou a záporné hodnoty s znaménkem mínus. + Značka plus, použitá před modifikátorem šířky (viz níže), říká, že vždy dodává znaménko pro číselné konverze, a to iv případě, že data, která mají být formátována, jsou pozitivní. The + přepíše modifikátor místa. # Pro určité ovládací písmena použijte "alternativní formulář". Pro %Ó, dodat p
Popis
Formát volby
Možnosti
Proměnné, záznamy a pole
Evidence
Pole
Vestavěné proměnné
Pole
Variabilní psaní a konverze
Oktální a hexadecimální konstanty
Řetězcové konstanty
Vzory a akce
Vzory
Pravidelné výrazy
Akce
Operátoři
Kontrolní výkazy
Výkazy I / O
Příkaz printf




