názov
gawk - skenovanie a spracovanie jazyka
synopse
civieť Možnosti štýlu POSIX alebo GNU -f Program-file -- súbor …civieť Možnosti štýlu POSIX alebo GNU -- Program-textové súbor … pgawk Možnosti štýlu POSIX alebo GNU -f Program-file -- súbor …pgawk Možnosti štýlu POSIX alebo GNU -- Program-textové súbor … gawk je implementácia programovacieho jazyka AWK projektom GNU. Je v súlade s definíciou jazyka v štandarde POSIX 1003.2 Command Language and Utilities. Táto verzia je založená na opise v AWK programovací jazyk , Aho, Kernighan a Weinberger s ďalšími funkciami, ktoré sa nachádzajú vo verzii UNIXu System V Release 4 awk . gawk poskytuje tiež novšie Bell Laboratories awk rozšírenia a niekoľko rozšírení špecifických pre GNU. Pgawk je profilovanie verzie civieť , Je to rovnaké v každom smere civieť , okrem toho, že programy prebiehajú pomalšie a automaticky vytvára v súbore profil vykonávania awkprof.out keď je hotovo. Pozrite si --profile nižšie. Príkazový riadok obsahuje možnosti na civieť samotný text programu AWK (ak nie je dodávaný cez -f alebo --file možnosti) a hodnoty, ktoré sa majú sprístupniť v argc a argv vopred definované premenné AWK. gawk Možnosti môžu byť buď tradičné jednostranné možnosti POSIX, alebo dlhé možnosti štýlu GNU. Možnosti POSIX začínajú jediným `` - '', zatiaľ čo dlhé možnosti začínajú `` - ''. Dlhé možnosti sa poskytujú pre funkcie špecifické pre GNU aj pre funkcie s mandátom POSIX. Podľa normy POSIX, civieť špecifické možnosti sú dodávané prostredníctvom argumentov pre W voľba. násobok W Možnosti dodávky sú k dispozícii W má príslušnú dlhú možnosť, ako je uvedené nižšie. Argumenty k dlhým možnostiam sa buď spájajú s možnosťou = znamienko, bez medzipriestorov, alebo môžu byť poskytnuté v ďalšom argumentu príkazového riadku. Dlhé možnosti môžu byť skrátené, pokiaľ skratka zostáva jedinečná. gawk akceptuje nasledujúce možnosti, ktoré sú uvedené v abecednom poradí. -F fs --field-separátor fs použitie fs pre oddeľovač vstupného poľa (hodnota FS preddefinovaná premenná). -v var = val --priradiť var = val Priraďte hodnotu val k premennej var , pred začiatkom spustenia programu. Takéto premenné hodnoty sú k dispozícii pre ZAČAŤ blok programu AWK. -f Program-file --file Program-file Prečítajte si zdroj programu AWK zo súboru Program-file , namiesto prvého argumentu príkazového riadku. násobok -f (alebo --file). -mf NNN -Pán NNN Nastavte rôzne hodnoty pamäte na hodnotu NNN , F flag nastavuje maximálny počet polí a r flag nastavuje maximálnu veľkosť záznamu. Tieto dve príznaky a -m sú z výskumnej verzie systému Bell Laboratories v systéme UNIX awk , Oni sú ignorovaní civieť , pretože civieť nemá žiadne vopred definované limity. -W compat -W tradičné --compat --traditional Spustiť kompatibilita mode. V režime kompatibility, civieť správa rovnako ako UNIX awk ; žiadne rozšírenia špecifické pre GNU nie sú rozpoznané. Použitie --traditional sa uprednostňuje pred ostatnými formami tejto možnosti. vidieť GNU EXTENSIONS, nižšie, pre viac informácií. -W copyleft -W autorské práva --copyleft --copyright Vytlačte krátku verziu správy o autorských právach GNU na štandardný výstup a úspešne ukončite. -W výpisu premenných= súbor --dump-premenné= súbor Vytlačte triedený zoznam globálnych premenných, ich typy a konečné hodnoty súbor , Ak nie súbor je k dispozícii, civieť používa súbor s názvom awkvars.out v aktuálnom adresári. Zoznam všetkých globálnych premenných je dobrý spôsob hľadania typografických chýb vo vašich programoch. Túto možnosť by ste použili aj vtedy, ak máte rozsiahly program s množstvom funkcií a chcete mať istotu, že vaše funkcie neúmyselne nepoužívajú globálne premenné, ktoré by ste chceli byť lokálne. (Je to obzvlášť jednoduchá chyba pri jednoduchých menách premenných, ako je ja, j, a tak ďalej.) -W pomoc -W využitie --Pomoc --usage Vytlačte pomerne krátky súhrn dostupných možností na štandardný výstup. (Podľa GNU kódovacie štandardy , tieto možnosti spôsobia okamžitý a úspešný odchod.) -W nečistoty= fatálne --lint= fatálne Poskytujú upozornenia na konštrukty, ktoré sú pochybné alebo neprenosné pre iné implementácieAWK. S voliteľným argumentom smrteľný, upozornenia na vlákna sa stávajú smrteľnými chybami. To môže byť drastické, ale jeho použitie určite povzbudí vývoj čistších programov AWK. -W starý --lint-old Poskytujte upozornenia na konštrukty, ktoré nie sú prenosné na pôvodnú verziu systému Unix awk . -W gen-po --gen-po Skenujte a analyzujte program AWK a vytvorte GNU .po formát súboru na štandardnom výstupe so záznamami pre všetky lokalizovateľné reťazce v programe. Samotný program sa nevykoná. Pozrite si GNU gettext distribúcie pre viac informácií o .po Súbory. -W bez desatinných údajov --non desatinné dátový Rozpoznávajte octové a hexadecimálne hodnoty vo vstupných údajoch. Túto možnosť používajte veľmi opatrne! -W posix --posix Toto sa zapne kompatibilita režim s nasledujúcimi dodatočnými obmedzeniami: * X sekvencie úniku nie sú rozpoznané. * Iba medzera a tabuľka fungujú ako oddeľovače poľa FS je nastavený na jeden priestor, nový riadok nie je. * Nemôžete pokračovať po riadkoch ? a :. * Synonymum func pre kľúčové slovo funkcie nie je rozpoznaná. * Operátori ** a **= nemožno použiť namiesto ^ a ^=. * fflush () funkcia nie je k dispozícii. -W profil= prof_file --profile= prof_file Odošlite profilovacie údaje na prof_file , Predvolená hodnota je awkprof.out, Pri spustení civieť , profil je len "pekne tlačená" verzia programu. Pri spustení pgawk , profil obsahuje počty vykonaní každého príkazu v programe v ľavom okraji a počty funkčných volaní pre každú užívateľom definovanú funkciu. -W re-interval --re intervalu Povoliť použitie intervalové výrazy v súlade s regulárnym výrazom (pozri Pravidelné výrazy, nižšie). Intervalové výrazy neboli tradične dostupné v jazyku AWK. Norma POSIX ich pridal awk a egrep v súlade s ostatnými. Avšak ich použitie pravdepodobne prelomí staré programy AWK, takže civieť poskytuje ich len vtedy, ak sú s touto možnosťou požiadané, alebo kedy --posix je zadané. -W zdroj Program-textové --source Program-textové použitie Program-textové ako zdrojový kód programu AWK. Táto voľba umožňuje jednoduché premiešanie funkcií knižnice (používa sa cez -f a --file možnosti) so zdrojovým kódom zadaným na príkazovom riadku. Je určený predovšetkým pre stredné až veľké programy AWK, ktoré sa používajú v shellových skriptoch. -W verzia --version Tlačte informácie o verzii pre túto konkrétnu kópiu civieť na štandardnom výstupe. To je užitočné hlavne pre vedenie, či súčasná kópia civieť vo vašom systéme je aktuálny vzhľadom na to, čo distribuuje Nadácia Free Software Foundation. To je tiež užitočné pri hlásení chýb. (Podľa GNU kódovacie štandardy , tieto možnosti spôsobia okamžitý a úspešný odchod.) -- Označte koniec možností. To je užitočné, aby sa umožnilo ďalšie argumenty samotného programu AWK, aby sa začalo s "-". Toto je hlavne pre konzistenciu s konvenciou parsovania argumentov používanou vo väčšine ostatných programov POSIX. V režime kompatibility sú všetky ďalšie možnosti označené ako neplatné, inak sa ignorujú. Pri bežnej prevádzke, ak je dodaný programový text, do programu AWK sa v programe argv pole na spracovanie. To je obzvlášť užitočné pre spustenie programov AWK pomocou mechanizmu interpretátora "!!". VÝKON PROGRAMU AWK Program AWK pozostáva zo sekvencie vyhlásení vzoru a voliteľných funkčných definícií. vzor { vyhlásenia o činnosti }funkcie názov ( zoznam parametrov ) { vyhlásenie }
gawk najprv číta programový zdroj zo súboru Program-file (y), ak je uvedené, z argumentov na --source, alebo z prvého argumentu bez možnosti na príkazovom riadku. -f a --source Možnosti sa môžu použiť na príkazovom riadku viackrát. gawk číta text programu, akoby všetky Program-file príkazy a zdrojové texty príkazového riadku boli zjednotené. To je užitočné pre vytváranie knižníc funkcií AWK bez toho, aby bolo potrebné ich zahrnúť do každého nového programu AWK, ktorý ich používa. Poskytuje tiež možnosť zmiešať funkcie knižnice s programami príkazového riadku. Premenná prostredia AWKPATH určuje cestu vyhľadávania, ktorá sa použije pri hľadaní zdrojových súborov s názvom -f voľba. Ak táto premenná neexistuje, predvolená cesta je":. / Usr / local / share / awk", (Skutočný adresár sa môže líšiť v závislosti od toho, ako civieť bol postavený a nainštalovaný.) Ak je názov súboru daný -f voľba obsahuje znak "` / '', nevykoná sa žiadna cesta. gawk spustí programy AWK v nasledujúcom poradí. Najprv všetky priradenia premenných špecifikované prostredníctvom -v sú vykonané. Ďalšie, civieť program zostaví do interného formulára. potom civieť vykoná kód v ZAČAŤ blok (y) (ak existuje), a potom pokračuje čítať každý súbor s názvom v argv array. Ak na príkazovom riadku nie sú uvedené žiadne súbory, civieť číta štandardný vstup. Ak má názov súboru na príkazovom riadku formulár var = val považuje sa to za priradenie premennej. Premenná var bude priradená hodnota val , (To sa stane po všetkom ZAČAŤ Bloky boli spustené.) Priradenie príkazového riadku príkazového riadku je najužitočnejšie na dynamické priradenie hodnôt premenným, ktoré AWK používa na riadenie toho, ako je vstup rozdelený na polia a záznamy. To je tiež užitočné pre riadenie stavu, ak sú potrebné viacnásobné prechody cez jeden dátový súbor. Ak hodnota konkrétneho prvku argv je prázdny (''), civieť preskočí nad ním. Pre každý záznam na vstupe, civieť testy, či sa zhoduje s ľubovoľným vzor v programe AWK. Pre každý vzor, ktorý zodpovedá záznamu, sa priradí príslušný akčné je vykonaná. Vzory sa testujú v poradí, v akom sa vyskytujú v programe. Napokon po tom, čo bol všetok vstup vyčerpaný, civieť vykoná kód v KONIEC blok (-y) (ak existujú). AWK premenné sú dynamické; vznikajú pri ich prvom použití. Ich hodnoty sú buď čísla s pohyblivou čiarkou alebo reťazce, alebo obidva v závislosti od toho, ako sa používajú. AWK má tiež jednorozmerné polia; môžu byť simulované polia s viacerými rozmermi. Niekoľko preddefinovaných premenných sa nastavuje ako programový chod; tieto budú opísané podľa potreby a zhrnuté nižšie. Zvyčajne sú záznamy oddelené novými znakmi. Môžete riadiť, ako sa záznamy oddelia priradením hodnôt k zabudovanej premennej RS, ak RS je ľubovoľný znak, tento znak oddeľuje záznamy. Inak, RS je regulárny výraz. Text na vstupe, ktorý zodpovedá tomuto regulárnemu výrazu, oddeľuje záznam. V režime kompatibility sa však na oddelenie záznamov používa iba prvý znak jeho reťazca. ak RS je nastavený na nulový reťazec, potom sú záznamy oddelené prázdnymi riadkami. Kedy RS je nastavený na nulový reťazec, znak novej čiary vždy pôsobí ako oddeľovač polí, okrem hodnoty FS môžu mať. Ako sa číta každý vstupný záznam, civieť rozdelí záznam do poľa , s použitím hodnoty FS premenná ako oddeľovač polí. ak FS je jeden znak, polia sú oddelené týmto znakom. ak FS je nulový reťazec, potom sa každý jednotlivý znak stáva samostatným poľom. Inak, FS sa očakáva, že bude plne regulárny výraz. Vo zvláštnom prípade FS je jeden priestor, polia sú oddelené behmi medzier a / alebo tabuliek a / alebo nových riadkov. (Ale pozri diskusiu o --posix, nižšie). POZNÁMKA: Hodnota ignoreCase (pozri nižšie) ovplyvňuje aj rozdelenie polí FS je regulárny výraz a ako sú záznamy oddelené RS je regulárny výraz. Ak FIELDWIDTHS premenná je nastavená na zoznam čísel oddelených medzerou, očakáva sa, že každé pole bude mať pevnú šírku a civieť rozdelí záznam pomocou špecifikovaných šírok. Hodnota FS je ignorovaná. Priradenie novej hodnoty FS má prednosť pred použitím FIELDWIDTHS, a obnoví predvolené správanie. Každé pole vo vstupnom záznamu sa môže odvolávať na jeho polohu, $1, $2, a tak ďalej. $0 je celý záznam. Do polí nie je potrebné odkazovať na konštanty: n = 5vytlačiť $ n vytlačí piate pole vo vstupnom zápise. Premenná NF je nastavený na celkový počet polí vo vstupnom zápise. Odkazy na neexistujúce polia (napr. Polia po $ NF) produkujú null-string. Priradenie do neexistujúceho poľa (napr. $ (NF + 2) = 5) zvyšuje hodnotu NF, vytvorí ľubovoľné polia s nulovým reťazcom ako ich hodnotu a spôsobí hodnotu $0 ktoré sa majú prepočítať, pričom polia sú oddelené hodnotou OFZ, Odkazy na negatívne číslované polia spôsobujú fatálnu chybu. Dekrementační NF spôsobí stratu hodnôt polí za novú hodnotu a hodnotu $0 ktoré sa majú prepočítať, pričom polia sú oddelené hodnotou OFZ. Priradenie hodnoty existujúcemu poľa spôsobí, že celý záznam sa znovu vytvorí $0 sa odkazuje. Podobne priradenie hodnoty $0 spôsobuje zmenu záznamu a vytvára nové hodnoty pre polia. gawk Vstavané premenné sú: argc Počet argumentov príkazového riadku (nezahŕňa možnosti na civieť , alebo zdroj programu). ARGIND Index v argv aktuálneho súboru, ktorý sa spracováva. argv Pole argumentov príkazového riadku. Pole je indexované od 0 do argc - 1. Dynamicky meniť obsah argv môže ovládať súbory použité pre dáta. BINMODE Na systémoch, ktoré nie sú POSIX, určuje použitie "binárneho" režimu pre všetky súbory I / O. Číselné hodnoty 1, 2 alebo 3 určujú, že vstupné súbory, výstupné súbory alebo všetky súbory by mali používať binárne I / O. Hodnoty reťazca "R", alebo "W" že vstupné súbory alebo výstupné súbory by mali používať binárne I / O. Hodnoty reťazca "Rw" alebo "Wr" špecifikujte, že všetky súbory by mali používať binárne I / O. Akákoľvek iná hodnota reťazca sa považuje za "Rw", ale generuje varovnú správu. CONVFMT Formát konverzie pre čísla, "% 0,6 g", predvolene. ENVIRON Pole obsahujúce hodnoty aktuálneho prostredia. Pole je indexované premennými prostredia, pričom každý prvok je hodnota tejto premennej (napr.ENVIRON "HOME" mohlo by byť / Home / Arnold). Zmena tohto poľa neovplyvňuje životné prostredie videné programami, ktoré civieť trestie cez presmerovanie alebo systém ()Funkcie. errno Ak sa vyskytne systémová chyba, vykonajte presmerovanie getline, počas čítania getline, alebo počas Zavrieť(), potom errno bude obsahovať reťazec popisujúci chybu. Hodnota je predmetom prekladu v neanglických lokalizáciách. FIELDWIDTHS Zoznam šírky poľa oddelený bielym priestorom. Po nastavení, civieť analyzuje vstup do polí s pevnou šírkou namiesto použitia hodnoty FS premenná ako oddeľovač polí. NÁZOV SÚBORU Názov aktuálneho vstupného súboru.Ak na príkazovom riadku nie sú zadané žiadne súbory, hodnota NÁZOV SÚBORU je `` - ''. Avšak, NÁZOV SÚBORU je nedefinovaný vo vnútri ZAČAŤ blok (ak nie je nastavený getline). FNR Vstupné číslo záznamu v aktuálnom vstupnom súbore. FS Oddeľovač vstupných polí, štandardne medzera. vidieť Fields, vyššie. ignoreCase Ovládanie citlivosti na všetky veľkosti písmen a operácií s reťazcami. ak ignoreCase má nenulovú hodnotu, potom porovnanie reťazcov a porovnanie vzorov v pravidlách, rozdelenie poľa medzi FS, záznam oddeľujúci s RS, regulárny výraz zodpovedajúci ~a !~a gensub (), gsub (), index (), zápas(), split (), a sub () vstavané funkcie všetky ignorujú prípady pri vykonávaní operácií regulárneho výrazu. POZNÁMKA: Inkasovanie poľa je nie postihnutých, ani nie je asort () Funkcie. Ak teda ignoreCase nie je rovný nule, / AB / zodpovedá všetkým reťazcom "Ab", "AB","Ab", a "AB", Rovnako ako u všetkých premenných AWK, počiatočná hodnota ignoreCase je nula, takže všetky regulárne výrazy a reťazcové operácie sú zvyčajne malé a veľké písmená. Pod Unixom sa pri ignorovaní prípadu používa celá znaková sada ISO 8859-1 Latin-1. Lint Poskytuje dynamické ovládanie --lint v rámci programu AWK. Keď je pravda, civieť vytlačí upozornenia na vlákna. Keď je to falošné, nie. Keď je priradená hodnota reťazca "Fatálna", upozornenia na vlákna sa stávajú smrteľnými chybami, presne tak --lint = fatálne, Akákoľvek iná skutočná hodnota iba vytlačí varovania. NF Počet polí v aktuálnom vstupnom zápise. NR Celkový počet zaznamenaných vstupných záznamov. OFMT Výstupný formát pre čísla, "% 0,6 g", predvolene. OFZ Oddeľovač výstupného poľa, štandardne medzera. ORS Výstupný záznamový oddeľovač, štandardne nový riadok. procinfo Prvky tohto poľa poskytujú prístup k informáciám o bežiacom programe AWK. Na niektorých systémoch môžu byť prvky v poli, "Group1" skrz "skupina n ' pre niektoré n , čo je počet doplnkových skupín, ktoré má tento proces. Použi v prevádzkovateľ na testovanie týchto prvkov. Sú k dispozícii nasledujúce prvky: Procinfo "egida" hodnota getegid (2) systémové volanie. Procinfo "euid" hodnota geteuid (2) systémové volanie. Procinfo "FS" "FS" ak sa pole rozdeľuje FS je v platnosti alebo "FIELDWIDTHS" ak sa pole rozdeľuje FIELDWIDTHS je v platnosti. Procinfo "GID" hodnota getgid (2) systémové volanie. Procinfo "pgrpid" ID skupiny procesov aktuálneho procesu. Procinfo "pid" ID procesu aktuálneho procesu. Procinfo "ppid" ID rodičovského procesu aktuálneho procesu. Procinfo "uid" hodnota getuid (2) systémové volanie. RS Oddeľovač vstupných záznamov je štandardne nový riadok. RT Terminátor záznamu. gawk súpravy RT na vstupný text, ktorý zodpovedá znaku alebo regulárnemu výrazu špecifikovanému RS. rstart Index prvého znaku sa zhoduje s zápas(); 0, ak nie je zhoda. (Znamená to, že indexy znakov začínajú na jednom.) RLENGTH Dĺžka reťazca sa zhoduje s zápas(); -1 ak nie je zhoda. SUBSEP Znak použitý na oddelenie viacerých indexov v prvkoch poľa, ktorý je predvolený ' 034'. TEXTOVÁDOMÉNA Textová doména programu AWK; slúži na vyhľadanie lokalizovaných prekladov pre reťazce programu. Polia sú zaregistrované s výrazom medzi hranatými zátvorkami ( a ). Ak je výrazom zoznam výrazov ( expr , expr …), indexový poinok je reťazec pozostávajúci z zreťazenia (reťazecovej) hodnoty každého výrazu, oddelené hodnotou SUBSEP variabilné. Toto zariadenie sa používa na simuláciu viacnásobne dimenzovaných polí. Napríklad: i = "A"; j = "B"; k = "C"x i, j, k = "Ahoj, svet n" priradí reťazec "ahoj, svet n" na prvok poľa X ktorý je indexovaný reťazcom"A 034B 034C", Všetky súbory v AWK sú asociatívne, t.j. indexované reťazcovými hodnotami. Osobitný operátor v môže byť použitý v ak alebo zatiaľ čo vyhlásenie, či pole má index pozostávajúci z konkrétnej hodnoty. ak (val v mape) pole pre tlač val Ak pole má viac indexov, použite (i, j) v poli. v konštrukt sa môže tiež použiť v a pre slučka na opakovanie všetkých prvkov poľa. Element môže byť vymazaný z poľa pomocou vymazať vyhlásenia. vymazať vyhlásenie sa môže použiť aj na vymazanie celého obsahu poľa, len zadaním názvu poľa bez indexu. Premenné a polia môžu byť čísla (s pohyblivou čiarou) alebo reťazce, alebo oboje. Ako sa interpretuje hodnota premennej závisí od jej kontextu. Ak sa použije v číselnom vyjadrení, bude sa považovať za číslo, ak sa použije ako reťazec, bude sa považovať za reťazec. Ak chcete, aby sa premenná považovala za číslo, pridajte ju 0; nútiť ho, aby sa s ňou zaobchádzalo ako s reťazcom, spojiť ho s nulovým reťazcom. Keď sa reťazec musí konvertovať na číslo, konverzia sa vykoná pomocou strtod (3). Číslo sa prevedie na reťazec pomocou hodnoty CONVFMT ako formátový reťazec pre sprintf (3) s číselnou hodnotou premennej ako argument. Napriek tomu, že všetky čísla v AWK sú plovoucí bod, integrálne hodnoty sú vždy konvertované ako celé čísla. Tak, daný CONVFMT = "% 2.2f" a = 12 b = a "" premennej b má hodnotu reťazca '12' a nie '12.00'. gawk vykoná porovnanie nasledovne: Ak sú dve premenné numerické, porovnávajú sa číselne. Ak je jedna hodnota číselná a druhá má hodnotu reťazca, ktorá je "číselný reťazec", potom sa porovnáva aj číselne. V opačnom prípade sa číselná hodnota prevedie na reťazec a vykoná sa porovnanie reťazcov. Dve struny sú samozrejme porovnávané ako struny. Všimnite si, že štandard POSIX uplatňuje pojem "číselný reťazec" všade, dokonca aj na konštanty reťazca. Je to však jednoznačne nesprávne a civieť to neurobí. (Našťastie to je opravené v ďalšej verzii normy.) Všimnite si, že reťazcové konštanty, ako napr '57', sú nie sú reťazcové konštanty. Myšlienka "číselného reťazca" sa vzťahuje iba na polia, getline vstup, NÁZOV SÚBORU, argv prvky, ENVIRON prvky a prvky poľa vytvoreného split () ktoré sú číselné reťazce. Základná myšlienka je, že užívateľské vstupy , a preto by sa s touto cestou malo zaobchádzať iba vstupom používateľa, ktorý vyzerá číselne. Neinicializované premenné majú číselnú hodnotu 0 a reťazovú hodnotu "" (reťazec null alebo prázdny). Počínajúc verziou 3.1 gawk, v zdrojovom kóde programu AWK môžete použiť oktávové a hexadecimálne konštanty v štýle C. Napríklad osemčlenná hodnota 011 sa rovná desatinnej 9a hexadecimálnu hodnotu 0x11 sa rovná desatinnému číslu 17. Konštanty reťazcov v AWK sú sekvencie znakov uzavreté medzi dvojitými úvodzovkami ('). V rámci reťazcov je to isté únikové sekvencie sú rozpoznané ako v C. Sú to: \ Doslovné spätné lomítko. a Znak "výzvy"; zvyčajne znak ASCII BEL. b backspace. f forma podávania. n Nový riadok. r vrátenie vozidla. t vodorovná záložka. v vertikálna záložka. X hexadecimálne číslice Znak reprezentovaný reťazcom hexadecimálnych číslic nasledujúcich po X, Rovnako ako v programe ANSIC sa všetky nasledujúce hexadecimálne číslice považujú za súčasť únikovej sekvencie. (Táto funkcia by nám mala povedať niečo o jazykovom návrhu výboru). Napr. " X1B" je znak ASCIIESC (escape). ddd Znak reprezentovaný 1-, 2- alebo 3-číselnou sekvenciou osičích číslic. napr., ' 033' je ASCII ESC (escape) znak. C Doslovná postava C . Únikové sekvencie môžu byť použité aj v konštantných regulárnych výrazoch (napr./ t f n r v / zodpovedá znaky medzery. V režime kompatibility sa znaky reprezentované oktávovými a hexadecimálnymi sekvenciami escape spracujú doslovne pri použití v konštantách regulárneho výrazu. To znamená, / A 52b / je ekvivalentná/ A * b /. AWK je jazykovo orientovaný jazyk. Vzor prichádza najprv a potom akcia. Vyhlásenia o činnosti sú priložené { a }, Buď vzor môže chýbať, alebo akcia môže chýbať, ale samozrejme nie oboje. Ak vzorka chýba, akcia sa vykoná pre každý záznam vstupu. Chýbajúce akcie sú ekvivalentné {print} ktorý vytlačí celý záznam. Komentáre začínajú znakom "#" a pokračujú až do konca riadku. Na oddelenie výpisov je možné použiť prázdne riadky. Zvyčajne vyhlásenie končí novým riadkom, avšak to nie je prípad liniek končiacich v súbore ``, '', {, ?, :, &&, alebo ||, Riadky končiace v robiť alebo inak majú tiež svoje vyhlásenia automaticky pokračovať na nasledujúcom riadku. V ostatných prípadoch môže byť riadok pokračovať tak, že ho ukončíte ', v takom prípade bude nový riadok ignorovaný. Viaceré príkazy sa dajú umiestniť na jeden riadok tak, že ich oddeľujete znakom ``; ''. Toto sa vzťahuje na vyhlásenia v rámci akčnej časti páru vzorov a akcií (obvyklý prípad), ako aj na výkazy vlastností vzoru. Vzory AWK môžu byť nasledovné: ZAČAŤ KONIEC / regulárny výraz / relačný výraz vzor && vzor vzor || vzor vzor ? vzor : vzor ( vzor ) ! vzor vzor1 , vzor2 ZAČAŤ a KONIEC sú dva špeciálne druhy vzorov, ktoré nie sú testované proti vstupu. Akčné časti všetkých ZAČAŤ vzory sú zlúčené, ako keby boli všetky výroky napísané v jednom ZAČAŤ blok. Vykonajú sa skôr, než sa číta každý vstup. Podobne všetky KONIEC bloky sú zlúčené a vykonané, keď je všetok vstup vyčerpaný (alebo keď je východ vyhlásenie sa vykoná). ZAČAŤ a KONIEC vzory nie je možné kombinovať s inými vzormi vo výrazoch. ZAČAŤ a KONIEC vzory nemôžu chýbať akčné časti. pre / regulárny výraz / vzory, súvisiace vyhlásenie sa vykoná pre každý vstupný záznam, ktorý zodpovedá regulárnemu výrazu. Pravidelné výrazy sú rovnaké ako v egrep (1) a sú zhrnuté nižšie. relačný výraz môže používať ktorýkoľvek z nižšie uvedených operátorov v sekcii akcie. Tieto zvyčajne testujú, či sa určité polia zhodujú s určitými regulárnymi výrazmi. &&, ||, a ! operátori sú logickí AND, logický OR a logický NOT, ako v C. Vykonávajú skratové hodnotenie, rovnako ako v C, a používajú sa na kombinovanie primitívnejších výrazových vzorov. Rovnako ako vo väčšine jazykov je možné použiť zátvorky na zmenu poradia hodnotenia. ?: operátor je rovnaký operátor v C. Ak je prvý vzor pravdivý, potom vzor použitý na testovanie je druhý vzor, inak je to tretí. Vyhodnocuje sa len jeden z druhého a tretieho vzoru. vzor1 , vzor2 forma výrazu sa nazýva a rozsah , Zodpovedá všetkým vstupným záznamom začínajúcim záznamom, ktorý sa zhoduje vzor1 , a pokračovať až do záznamu, ktorý zodpovedá vzor2 , vrátane. Nekombinuje sa s iným výrazom. Pravidelné výrazy sú rozšírený typ v egrep , Skladajú sa z nasledujúcich znakov: C sa zhoduje s metódou non-metacharacter C . c zodpovedá doslovnému charakteru C . . zodpovedá ľubovoľnému znaku počítajúc do toho Nový riadok. ^ zodpovedá začiatku reťazca. $ zodpovedá koncu reťazca. abc … zoznam znakov, zhoduje sa so všetkými znakmi abc … . ^ abc … negovaný zoznam znakov, zhoduje sa s akýmkoľvek znakom okrem abc … . r1 | r2 striedanie: zodpovedá buď r1 alebo r2 . R1R2 zlučovanie: zápalky r1 , a potom r2 . r + zodpovedá jednej alebo viacerým r Očiam. r * sa rovná nule alebo viac r Očiam. r ? zodpovedá nula alebo jedna r Očiam. ( r ) zoskupovanie: zhody r . r { n } r { n ,} r { n , m } Jedno alebo dve čísla vo vnútri ramienok označujú jeden intervalový výraz , Ak je v zátvorkách jedno číslo, predchádzajúci regulárny výraz r sa opakuje n časy. Ak sú dve čísla oddelené čiarkou, r sa opakuje n na m časy. Ak je jedno číslo nasledované čiarkou, potom r sa opakuje aspoň n časy. Intervalové výrazy sú k dispozícii iba vtedy, ak sú k dispozícii --posix alebo --re intervalu je zadaný na príkazovom riadku. y sa zhoduje s prázdnym reťazcom na začiatku alebo na konci slova. B zodpovedá prázdnemu reťazcu v rámci slova. < sa zhoduje s prázdnym reťazcom na začiatku slova. > sa zhoduje s prázdnym reťazcom na konci slova. w zodpovedá ľubovoľnému znaku zložky (písmeno, číslica alebo podčiarknutie). W zodpovedá akejkoľvek charaktere, ktorá nie je slovo-zložka. ` zodpovedá prázdnemu reťazcu na začiatku vyrovnávacej pamäte (reťazec). ' sa zhoduje s prázdnym reťazcom na konci vyrovnávacej pamäte. Úsekové sekvencie, ktoré sú platné v reťazových konštáloch (pozri nižšie), sú tiež platné v regulárnych výrazoch. Triedy znakov sú novou funkciou zavedenou v štandarde POSIX. Trieda znakov je špeciálna notácia na opis zoznamov znakov, ktoré majú špecifický atribút, ale kde samotné skutočné znaky sa môžu v jednotlivých krajinách líšiť a / alebo z množiny znakov na znakovú sadu. Napríklad v USA a vo Francúzsku sa líši pojem abecedného charakteru. Trieda znakov je platná iba v regulárnom výraze vnútri zátvorkách zoznamu znakov. Triedy znakov pozostávajú z :kľúčové slovo označujúce triedu a :, Triedy znakov definované štandardom POSIX sú: : Alnum: Alfanumerické znaky. : Alpha: Abecedné znaky. : Blank: Priestorové alebo tabuľkové znaky. : Cntrl: Ovládajte znaky. : Digit: Číselné znaky. : Graf: Znaky, ktoré sú tlačiteľné aj viditeľné. (Miesto je možné vytlačiť, ale nie viditeľné, zatiaľ čo je oboje.) : Nižšia: Malé abecedné znaky. : Print: Tlačiteľné znaky (znaky, ktoré nie sú riadiacimi znakmi.) : Punctata: Interpunkčné znaky (znaky, ktoré nie sú písmená, číslice, riadiace znaky alebo medzery). : Space: Priestorové znaky (napríklad medzery, tabuľky a formuláre, aby sme mohli pomenovať niekoľko). : Horná: Veľké abecedné znaky. : Xdigit: Znaky, ktoré sú hexadecimálne číslice. Napríklad pred štandardom POSIX, aby zodpovedali alfanumerické znaky, museli by ste napísať / A-Za-z0-9 /, Ak by vaša sada znakov obsahovala iné abecedné znaky, nezhodovala by sa s nimi, a ak vaša sada znakov bola zoradená inak ako ASCII, nemusí sa to ani zhodovať s alfanumerickými znakmi ASCII. Pomocou tried znakov POSIX môžete písať/ : Alnum: /, a to zodpovedá abecedným a číselným znakom vo vašej súprave znakov. V zoznamoch znakov sa môžu zobraziť dve ďalšie špeciálne sekvencie. Tieto sa vzťahujú na znakové sady bez ASCII, ktoré môžu mať jednotlivé symboly (nazývané zberateľských prvkov ), ktoré sú reprezentované viacerými znakmi, ako aj niekoľko znakov, ktoré sú ekvivalentné znášanie , alebo triedenie, účely. (Napr. Vo francúzštine je ekvivalentná rovina `` e '' a ekvivalentný. Zoradenie symbolov Symbol porovnávania je viacmodulový prvok prekladania, ktorý je uzavretý . a ., Napríklad, ak ch je zrovnávací prvok .Ch. je regulárny výraz, ktorý sa zhoduje s týmto porovnávacím prvkom, zatiaľ čo Ch je regulárny výraz, ktorý sa zhoduje buď s C alebo hod. Triedy rovnocennosti Trieda ekvivalencie je názov špecifický pre miestne nastavenie pre zoznam znakov, ktoré sú ekvivalentné. Názov je priložený = a =, Napríklad meno e môže byť použitý na reprezentáciu všetkých "e", "e", "a" e ". V tomto prípade, = E = je regulárny výraz, ktorý sa zhoduje s ktorýmkoľvek z nich e, e ', alebo určenia E. Tieto funkcie sú veľmi cenné v neanglicky hovoriacich lokalitách. Knižnica to funguje civieť Používa sa pre regulárne výrazy, ktoré v súčasnosti rozpoznávajú iba triedy znakov POSIX. nerozpoznávajú porovnávacie symboly alebo triedy ekvivalencie. y, B, <, >, w, W, `, a ' prevádzkovatelia sú špecifické civieť ; sú rozšírenia založené na zariadeniach v knižniciach regulárnej expresie GNU. Rôzne možnosti príkazového riadku riadia ako civieť interpretuje znaky v regulárnych výrazoch. Žiadne možnosti V predvolenom prípade, civieť poskytnúť všetky možnosti regulárnych výrazov POSIX a operátorov regulárnej expresie GNU opísaných vyššie. Intervalové výrazy však nie sú podporované. --posix Podporované sú iba regulárne výrazy POSIX, operátory GNU nie sú špeciálne. (Napr, w zodpovedá doslovne w). Intervalové výrazy sú povolené. --traditional Tradičný Unix awk regulárne výrazy sa zhodujú. Operátori GNU nie sú špeciálni, intervalové výrazy nie sú k dispozícii a ani triedy znakov POSIX (: Alnum: a tak ďalej). Znaky opísané osmičkami a hexadecimálnymi sekvenciami sa zachytávajú doslovne, aj keď predstavujú metacharactery s regulárnym výrazom. --re intervalu Povoliť intervalové výrazy v regulárnych výrazoch, aj keď --traditional bola poskytnutá. Vyhlásenia o činnosti sú uzavreté v zátvorkách, { a }, Akčné vyhlásenia pozostávajú z obvyklých zadaní, podmienených a slučkových vyhlásení, ktoré sa nachádzajú vo väčšine jazykov. Operátori, kontrolné výkazy a dostupné vstupné / výstupné výkazy sú vzorované po tých, ktoré sú uvedené v C. Prevádzkovatelia v AWK sú v poradí klesajúcich priorít (…) zoskupenia $ Odkaz na pole. ++ -- Zvýšenie a zníženie, prefix aj postfix. ^ Exponentiácia (** môžu byť tiež použité, a **= pre operátor priradenia). + - ! Unary plus, unary mínus a logická negácia. * / % Násobenie, rozdelenie a modul. + - Pridanie a odčítanie. priestor Spojité reťazce. < > <= >= != == Pravidelní relační operátori. ~ !~ Zhoda s regulárnym výrazom, negovaná zhoda. POZNÁMKA: Nepoužívajte konštantný regulárny výraz (/ Foo /) na ľavej strane a ~ alebo !~, Použite iba jednu na pravej strane. Výraz / foo / ~ exp má rovnaký význam ako (($ 0 ~ / foo /) ~ exp ), Toto je zvyčajne nie čo bolo zamýšľané. v Členstvo v poli. && Logické AND. || Logické OR. ?: Podmienený výraz C. Toto má formu expr1 ? expr2 : expr3 , ak expr1 je pravda, hodnota výrazu je expr2 , inak je to expr3 , Len jeden z nich expr2 a expr3 sa hodnotí. = += -= *= /= %= ^= Priradenie. Absolútne zadanie ( var = hodnota ) a priradenie operátora (ostatné formuláre). Kontrolné výkazy sú nasledovné: ak ( podmienka ) výkaz inak výkaz zatiaľ čo ( podmienka ) výkaz robiť výkaz zatiaľ čo ( podmienka ) pre ( expr1 ; expr2 ; expr3 ) výkaz pre ( var v rad ) výkaz prestávka ďalej vymazať rad index vymazať rad východ vyjadrenie { vyhlásenie } Príkazy vstupu / výstupu sú nasledovné: Zavrieť( súbor , ako ) Zatvorte súbor, potrubie alebo spoločný proces. Voliteľné ako by sa mali používať iba pri zatváraní jedného konca dvojcestného potrubia do spoločného procesu. Musí to byť aj hodnota reťazca "Až" alebo "Z". getline nastaviť $0 z ďalšieho záznamu o vstupe; sada NF, NR, FNR. getline < súbor nastaviť $0 od ďalšieho záznamu súbor ; sada NF. getline var nastaviť var z ďalšieho záznamu o vstupe; sada NR, FNR. getline var < súbor nastaviť var od ďalšieho záznamu súbor . príkaz | getline var beh príkaz napájanie výstupu buď do $0 alebo var , ako je uvedené vyššie. príkaz & getline var beh príkaz ako spoločné spracovanie potrubia výstup buď do $0 alebo var , ako je uvedené vyššie. Spoločné procesy sú civieť rozšírenie. Ďalšie Zastaviť spracovanie aktuálneho záznamu vstupu. Nasledujúci vstupný záznam sa číta a spracovanie začína s prvým vzorom v programe AWK. Ak sa dosiahne koniec vstupných údajov, KONIEC bloky, ak nejaké sú vykonané. nextfile Zastaviť spracovanie aktuálneho vstupného súboru. Ďalší vstupný záznam čítaný pochádza z nasledujúceho vstupného súboru. NÁZOV SÚBORU a ARGIND sú aktualizované, FNR sa vynuluje na hodnotu 1 a spracovanie sa začína nad prvým vzorom v programe AWK. Ak sa dosiahne koniec vstupných údajov, KONIEC bloky, ak nejaké sú vykonané. vytlačiť Vytlačí aktuálny záznam. Výstupný záznam sa ukončí hodnotou ORS variabilné. vytlačiť expr-list Vytlačí výrazy. Každý výraz je oddelený hodnotou OFZ variabilné. Výstupný záznam sa ukončí hodnotou ORS variabilné. vytlačiť expr-list > súbor Vytlačí výrazy na súbor , Každý výraz je oddelený hodnotou OFZ variabilné. Výstupný záznam sa ukončí hodnotou ORS variabilné. printf fmt, expr-list Formátovanie a tlač. printf fmt, expr-list > súbor Formátujte a vytlačte súbor . systém ( cmd riadku ) Vykonajte príkaz cmd riadku , a vráťte stav výstupu. (Toto nemusí byť dostupné v systémoch, ktoré nepodporujú POSIX.) fflush ( súbor ) Vypláchnite akékoľvek nárazníky spojené s otvoreným výstupným súborom alebo potrubím súbor , ak súbor chýba, potom sa štandardný výstup preplachuje. ak súbor je nulový reťazec, potom všetky otvorené výstupné súbory a potrubia majú vyprázdnené vyrovnávacie pamäte. Ďalšie povolené presmerovania výstupov sú povolené vytlačiť a printf. tlač … >> súbor pripojí výstup k súbor . tlač … | príkaz píše na potrubí. tlač … | & príkaz odosiela údaje do spoločného procesu. getline príkaz vráti 0 na konci súboru a -1 na chybu. Po chybe, errno obsahuje reťazec popisujúci problém. POZNÁMKA: Ak používate potrubie alebo spoločné spracovanie getline, alebo z vytlačiť alebo printf vo vnútri slučky, vy musieť použitie Zavrieť() na vytvorenie nových inštancií príkazu. AWK automaticky nezatvára potrubia alebo spoločné procesy, keď vrátia EOF. AWK verzie printf vyhlásenie a sprintf () (pozri nižšie) akceptuje nasledujúce formáty konverzie: % c Znak ASCII. Ak argument použitý pre % c je číselný, považuje sa za znak a vytlačený. V opačnom prípade sa predpokladá, že argument je reťazec a vytlačí sa iba prvý znak tohto reťazca. % d, % i Desiatkové číslo (celé číslo). % e,% E Číslo s pohyblivou čiarou formulára - d.dddddde + - dd, % E formátov E namiesto e. % f Číslo s pohyblivou čiarou formulára - ddd.dddddd. % g,% G použitie % e alebo % f konverzie, podľa toho, ktorá je kratšia, s nulovými nulami potlačenými.% G formátov % E namiesto % e. % o Nepodpísané osmičkové číslo (tiež celé číslo). % u Nepísané desatinné číslo (opäť celé číslo). % s Reťazec znakov. % x,% X Nepodpísané hexadecimálne číslo (celé číslo). %X formátov A B C D E F namiestoA b c d e f. %% Slobodný % charakter; žiadny argument nie je konvertovaný. Voliteľné prídavné parametre môžu byť medzi % a kontrolné písmeno: počítať $ Použi počítať "argument v tomto okamihu pri formátovaní. Toto sa nazýva a špecifikátor polohy a je určený predovšetkým na použitie v preložených verziách formátovacích reťazcov, nie v pôvodnom texte programu AWK. Je to civieť rozšírenie. - Tento výraz by mal byť vo svojej oblasti odôvodnený vľavo. priestor Pre číselné premeny, prefixové pozitívne hodnoty s medzerou a záporné hodnoty so znamienkom mínus. + Znak plus, ktorý sa používa pred modifikátorom šírky (pozri nižšie), hovorí, že vždy dodá značku pre číselné konverzie, a to aj vtedy, ak sú údaje, ktoré majú byť naformátované, pozitívne. + prepíše modifikátor priestoru. # Pre niektoré ovládacie písmená použite alternatívnu formu. pre % o, dodať prednú nulu. pre %X, a %X, dodať vedúce 0x alebo 0X pre nenulový výsledok. pre % e, % E, a % f, výsledok vždy obsahuje desatinnú čiarku. pre % g, a % G, posledné nuly nie sú z výsledku odstránené. 0 Vedúci 0 (nula) pôsobí ako príznak, ktorý označuje, že výstup by mal byť namiesto medzery vyplnený nulami. Platí to aj pre nečíselné výstupné formáty. Táto príznak má účinok iba vtedy, keď je šírka poľa väčšia ako hodnota, ktorá sa má vytlačiť. šírka Pole by malo byť čalúnené takouto šírkou. Pole je obyčajne vyplnené medzerami. Ak 0vlajka bola použitá, je vyložená nulami. . prec Číslo, ktoré určuje presnosť použitia pri tlači. Pre % e, % E, a % fTento formát určuje počet číslic, ktoré chcete vytlačiť vpravo od desatinnej čiarky. Pre % g, a % G formátov, určuje maximálny počet významných číslic. Pre % d, % o, % i, % u, %X, a %X formátov, určuje minimálny počet číslic, ktoré sa majú vytlačiť. pre % s, určuje maximálny počet znakov z reťazca, ktorý sa má vytlačiť. Dynamická
popis
Formát doplnkov
možnosti
Premenné, záznamy a polia
záznamy
Fields
Zabudované premenné
poľa
Variabilné písanie a konverzia
Oktálne a hexadecimálne konštanty
Konštanty reťazca
Vzory a akcie
vzory
Pravidelné výrazy
Akcia
operátori
Kontrolné vyhlásenia
I / O vyhlásenia
Príkaz printf













