Lærðu Linux Command - gawk

Nafn

gawk - mynstur skönnun og vinnslu tungumál

Yfirlit

gawk [POSIX eða GNU stíl valkostir] -f forritaskrá [ - ] skrá ...
gawk [POSIX eða GNU stíl valkostir] [ - ] program-textaskrá ...

pgawk [POSIX eða GNU stíl valkostir] -f forritaskrá [ - ] skrá ...
pgawk [POSIX eða GNU stíl valkostir] [ - ] program textaskrá ...

Lýsing

Gawk er framkvæmd GNU Project í AWK forritunarmálinu. Það er í samræmi við skilgreiningu á tungumáli í POSIX 1003.2 Command Language and Utilities Standard. Þessi útgáfa er aftur byggð á lýsingu í AWK forritunarmálinu , af Aho, Kernighan og Weinberger, með viðbótarþáttum sem finnast í útgáfu Unix-kerfisins V útgáfu 4 af UNIX. Gawk veitir einnig nýlegri Bell Laboratories awk eftirnafn, og fjölda GNU sérstakar viðbætur.

Pgawk er profiling útgáfa af gawk . Það er eins og á alla vegu að gawk , nema að forritin keyra hægar og það framleiðir sjálfkrafa framkvæmdarpróf í skránni awkprof.out þegar það er gert. Sjá - snið valkostur, hér að neðan.

Skipanalínan samanstendur af valkostum til að gawk sig, AWK program textinn (ef hann er ekki til staðar í gegnum -f eða -file valkosti) og gildi sem hægt er að fá í boði í ARGC og ARGV fyrirfram skilgreindum AWK breytur.

Valkostur

Gawk valkostir geta verið annaðhvort hefðbundnar POSIX einnar valkosti eða langvarandi GNU stíl. POSIX valkostir byrja með einum `` - '', en langar valkostir byrja með `` - ''. Langar valkostir eru veittar fyrir bæði GNU-sérstakar aðgerðir og POSIX-umboðsaðgerðir.

Í samræmi við POSIX staðalinn eru gawk- sérstakar valkostir til staðar með rökum við -W valkostinn. Margfeldi -W valkostir kunna að vera til staðar Hver -W valkostur hefur samsvarandi langan valkost, eins og lýst er hér að neðan. Rök við langa valkosti eru annaðhvort sameinuð með valkostinum með = tákni, án milligöngu rýmis, eða þau kunna að vera veitt í næstu skipanalínu rifju. Langir valkostir geta verið styttir, svo lengi sem skammstöfunin er enn einstök.

Valkostir

Gawk samþykkir eftirfarandi valkosti, skráð í stafrófsröð.

-F fs

--field-separator fs Notaðu fs fyrir inntaksreitaskilinn (gildi FS fyrirfram skilgreindrar breytu).

-v var = val

--assign var = val Úthlutaðu gildi val til breytu var , áður en framkvæmd áætlunarinnar hefst. Slík breytileg gildi eru í boði fyrir BEGIN blokkina í AWK forriti.

-f forritaskrá

--file program-file Lesið AWK program heimild frá skrá program-skrá , í stað þess að frá fyrsta stjórn lína rök. Hægt er að nota margfeldi -f (eða --file ) valkosti.

-mf NNN

-mr NNN Stilla mismunandi minnismörk fyrir gildi NNN . F flagið setur hámarksfjölda reitanna og r flipinn setur hámarks upptökustærð. Þessir tveir fánar og -m valkosturinn eru frá rannsóknarstofu Bell Laboratories UNIX awk . Þeir eru hunsuð af gawk , þar sem gawk hefur engin fyrirfram skilgreind mörk.

-W samhæft

-W hefðbundin

- Compat

--Traditional Hlaupa í eindrægni ham. Í samhæfileika hegðar gawk eins og UNIX awk ; Ekkert af GNU-sérstökum viðbótunum er viðurkennt. Notkun -traditional er valinn yfir önnur form þessa valkostar. Sjá GNU EXTENSIONS , hér fyrir neðan, til að fá frekari upplýsingar.

-W copyleft

-W höfundarrétti

-copyleft

- höfundarréttur Prentaðu stuttan útgáfu af GNU höfundarréttarupplýsingaskilaboðunum á venjulegu framleiðslunni og lokaðu með góðum árangri.

-W dump-breytur [ = skrá ]

--dump-breytur [ = skrá ] Prenta lista yfir alheimsbreytur, gerðir þeirra og endanlegt gildi til að skrá . Ef engin skrá er veitt, notar gawk skrá sem heitir awkvars.out í núverandi skrá.

Ef þú hefur lista yfir allar heimsvísu breytur er góð leið til að leita að villuskilum í forritunum þínum. Þú vilt einnig nota þennan möguleika ef þú ert með stórt forrit með fullt af aðgerðum og þú vilt vera viss um að aðgerðir þínar óvart ekki nota alþjóðlegar breytur sem þú ætlaðir að vera heimamaður. (Þetta er sérstaklega auðvelt að gera með einföldum breytuheiti eins og ég , j , og svo framvegis.)

-W hjálp

-W notkun

- hjálp

--usage Prenta tiltölulega stutt samantekt á tiltækum valkostum á stöðluðu framleiðslunni. (Eftir GNU Coding Standards , þessi valkostur veldur strax og árangursríkan hætta.)

-W lint [ = banvæn ]

--lint [ = banvæn ] Veita viðvaranir um byggingar sem eru vafasöm eða ekki hægt að flytja til annarra AWK framkvæmda. Með valfrjálst rök dauðsfallsins verða léttvarnir að verða banvænar villur. Þetta getur verið róttæk, en notkun þess mun örugglega hvetja til þróunar hreinna AWK forrita.

-W lítinn gömul

- lítill gamall Veita viðvaranir um byggingar sem eru ekki færanlegir í upprunalegu útgáfuna af Unix awk .

-W gen-po

--gen-po Skanna og flokka AWK forritið og búa til GNU .po snið skrá á staðlaðri framleiðsla með færslum fyrir allar staðhæfðar strengi í forritinu. Forritið sjálft er ekki framkvæmt. Sjá GNU gettext dreifingu fyrir frekari upplýsingar um .po skrár.

-W ekki tugatölur

- non-decimal-gögn Tilkynna octal og hexadecimal gildi í inntaksgögn. Notaðu þennan möguleika með mikilli varúð!

-W posix

--posix Þetta kveikt er á eindrægni með eftirfarandi viðbótar takmörkunum:

*

\ flugsöðvar eru ekki þekktar.

*

Aðeins pláss og flipi virka sem sviðarsepar þegar FS er stillt á eitt rými, newline er ekki.

*

Þú getur ekki haldið áfram eftir línum ? og :.

*

Samheiti func fyrir leitarorðið virka er ekki viðurkennt.

*

Rekstraraðilarnir ** og ** = geta ekki verið notaðir í staðinn fyrir ^ og ^ = .

*

Fflush () virknin er ekki tiltæk.

-W prófíl [ = prof_file ]

--profile [ = prof_file ] Senda profiling gögn til prof_file . Sjálfgefið er awkprof.out . Þegar hlaupið er með gawk er sniðið bara `` fallega prentað '' útgáfa af forritinu. Þegar hlaupið er með pgawk , inniheldur sniðið afköstum af hverri yfirlýsingu í forritinu í vinstri frammistöðu og aðgerðarsamtali fyrir hverja notanda sem er skilgreindur.

-W aftur bil

--re-bil Gerðu kleift að nota tjábil í reglulegri tjáningu samsvörun (sjá venjulegar tjáningar hér að neðan). Tíðni tjáninga var ekki venjulega aðgengileg á AWK-tungumáli. POSIX staðalinn bætti þeim við, til að gera akur og egrep í samræmi við hvert annað. Hins vegar er notkun þeirra líkleg til að brjóta gamla AWK forrit, þannig að gawk veitir þeim aðeins ef þeir eru beðnir um þennan valkost, eða þegar --posix er tilgreint.

-W uppspretta program-texti

--Source program texti Notaðu forrit texta sem AWK program uppspretta kóða. Þessi valkostur gerir auðvelt að blanda bókasafnsaðgerðum (notað með -f og --file valkostum) með frumkóða sem er slegið inn á stjórn línuna. Það er aðallega ætlað til miðlungs til stórra AWK forrita sem notuð eru í skeljaskriftir.

-W útgáfa

- útgáfa Útgáfuupplýsingar fyrir þetta tiltekna afrit af gawk á stöðluðu framleiðslunni. Þetta er gagnlegt aðallega til að vita hvort núverandi afrit af gawk á tölvunni þinni sé uppfærð með tilliti til hvað sem Free Software Foundation er að dreifa. Þetta er einnig gagnlegt þegar tilkynnt er um galla. (Eftir GNU Coding Standards , þessi valkostur veldur strax og árangursríkan hætta.)

- Skráðu lok valkostanna. Þetta er gagnlegt til að leyfa frekari rökum AWK forritinu sjálft að byrja með `` - ''. Þetta er fyrst og fremst vegna samrýmingar við samskiptareglurnar sem notuð eru af flestum öðrum POSIX forritum.

Í samhæfileikastillingu eru allir aðrir valkostir merktar sem ógildir, en hunsa þau annars. Í eðlilegum rekstri, svo lengi sem forrita textinn hefur verið gefinn, eru óþekktar valkostir sendar á AWK forritið í ARGV arrayinu til vinnslu. Þetta er sérstaklega gagnlegt til að keyra AWK forrit í gegnum `` #! '' Executable túlkunaraðferðina.

AWK PROGRAM EXECUTION

AWK program samanstendur af röð mynstur-aðgerða yfirlýsingar og valfrjáls hlutdeildar skilgreiningar.

mynstur { aðgerð yfirlýsingar }

virka nafn ( breytu listi ) { yfirlýsingar }

Gawk les fyrst forritið frá forritaskránni (s) ef það er tilgreint, frá rökum til - uppspretta , eða frá fyrsta valmöguleikanum á stjórnarlínunni. Hægt er að nota -f og - uppspretta valkostina oft á skipanalínunni. Gawk les textaforritið eins og öll forritaskrár s og skipanalínan hafi verið sameinaðir saman. Þetta er gagnlegt til að byggja upp bókasöfn af AWK-virka, án þess að þurfa að láta þau í sér í hverju nýju AWK forriti sem notar þær. Það veitir einnig möguleika á að blanda bókasafnsaðgerðir með skipanalínuáætlunum.

Umhverfisbreytan AWKPATH tilgreinir leitarslóð sem á að nota þegar finna skrár sem heitir með -f valkostinum. Ef þessi breytu er ekki til, er sjálfgefið slóðin ".: / Usr / local / share / awk" . (Raunveruleg skrá getur verið breytileg eftir því hvernig gawk var byggt og sett upp.) Ef skrá nafn sem gefið er á -f valkostinn inniheldur `` / '' staf, er engin leiðsleit gerð.

Gawk framkvæmir AWK forrit í eftirfarandi röð. Í fyrsta lagi eru öll breytileg verkefni sem tilgreind eru með -v valkostinum gerðar. Næst setur gawk forritið inn í innra form. Þá framkvæmir gawk kóðann í BEGIN blokkunum (ef einhverjar), og þá heldur áfram að lesa hverja skrá sem heitir í ARGV array. Ef engar skrár eru nefndar á stjórn línunnar, les gawk staðalinntakið.

Ef skráarnafn á stjórnarlínu hefur formið var = val er það meðhöndlað sem breytileg verkefni. Breytu var verður úthlutað gildi val . (Þetta gerist eftir að einhverjar BEGIN blokkir hafa verið keyrðar.) Úthlutun skipanalínubreytinga er gagnlegur til að gefa gildi gildi við breyturnar. AWK notar til að stjórna því hvernig inntak er skipt í reiti og færslur. Það er einnig gagnlegt til að stjórna ástandi ef þörf er á fleiri en einu sinni yfir einum gagnaskrá.

Ef gildi tiltekins þáttar ARGV er tómt ( "" ), sleppur gawk yfir það.

Fyrir hvert skrá í inntakinu, gawk próf til að sjá hvort það passar við hvaða mynstur í AWK forritinu. Fyrir hvert mynstur sem skráin samsvarar er tengd aðgerð framkvæmd. Mynsturin eru prófuð í þeirri röð sem þau eiga sér stað í áætluninni.

Að lokum, eftir að öll inntak er tæmd, framkvæmir gawk kóðann í END- blokkunum (ef einhver er).

Variables, Records og Fields

AWK breytur eru dynamic; Þeir koma til tilveru þegar þeir eru fyrst notaðir. Gildi þeirra eru annaðhvort fljótandi punktar eða strengir, eða hvort tveggja, eftir því hvernig þau eru notuð. AWK hefur einnig einnvíddar fylki; má fylgjast með fylki með mörgum stærðum. Nokkrar fyrirfram skilgreindar breytur eru settar sem forritið keyrir; Þetta verður lýst eins og þörf er á og samantekt hér að neðan.

Records

Venjulega eru skrár aðskilin með nýjum stafi. Þú getur stjórnað því hvernig skrár eru aðskilin með því að gefa gildi til innbyggðu breytu RS . Ef RS er einhver eðli, skilur þessi staf færslur. Annars er RS regluleg tjáning. Texti í inntakinu sem passar við þessa reglulega tjáningu skilur skrána. Hins vegar í samhæfileikastillingu er aðeins fyrsta staf strengagildi þess notað til að aðgreina færslur. Ef RS er stillt á núllstrenginn, þá eru færslur aðskilin með eyða línum. Þegar RS er stillt á null strenginn, virkar newline stafurinn alltaf sem veldaskilari, auk þess sem gildi FS getur haft.

Fields

Eins og hvert innsláttarrit er lesið skiptir gawk upp í reitina með því að nota gildi FS breytu sem svæðisskilara. Ef FS er ein stafur, eru reitir aðskilin með því stafi. Ef FS er null strengurinn, þá verður hver einstaklingur að vera sérstakt reit. Annars er gert ráð fyrir að FS sé fullur venjulegur tjáning. Í sérstöku tilviki að FS er eitt rými, eru reitir aðskilin með rennur af rýmum og / eða flipum og / eða nýjum línum. (En sjá umfjöllun um --posix , neðan). ATHUGIÐ: Verðmæti IGNORECASE (sjá hér að neðan) hefur einnig áhrif á hvernig sviðum er skipt þegar FS er venjulegur tjáning og hvernig færslur eru aðskilin þegar RS er venjulegur tjáning.

Ef FIELDWIDTHS breytu er stillt á rými aðskilinn lista yfir tölur, er gert ráð fyrir að hvert reit hafi fastan breidd og gawk skiptir upp skránum með tilgreindum breiddum. Verðmæti FS er hunsað. Ef nýtt gildi til FS er úthlutað fellur notkun FIELDWIDTHS og endurheimtir sjálfgefið hegðun.

Hvert reit í inntaksskránni má vísa til af stöðu sinni, $ 1 , $ 2 , og svo framvegis. $ 0 er allt metið. Ekki þarf að vísa til reitanna með stöðlum:

n = 5
prenta $ n

prentar fimmta reitinn í inntakaskránni.

Breytu NF er stillt á heildarfjölda reitanna í inntaksskránni.

Tilvísanir í óþekkta reiti (þ.e. reiti eftir $ NF ) framleiða núllstrenginn. Hins vegar er úthlutað til óviðkomandi reit (td $ (NF + 2) = 5 ) hækkar gildi NF , skapar nokkrar millifærðar reiti með núllstrengnum sem gildi þeirra og veldur því að verðmæti $ 0 verði endurreiknað með sviðin eru aðskilin með gildi OFS . Tilvísanir í neikvæða töluliða reiti valda banvænum villum. Decrementing NF veldur því að gildin sviðum fyrirfram nýju gildi tapist og að verðmæti $ 0 verði endurreiknað, þar sem reitarnir eru aðskilin með gildi OFS .

Ef gildi er úthlutað í gildandi reit veldur það að allt uppbygging sé endurreist þegar $ 0 er vísað til. Á sama hátt er að gefa upp gildi til $ 0, sem veldur því að skráin sé endurreist, að búa til ný gildi fyrir reitina.

Innbyggðir breytur

Innbyggðu breytur Gawk eru:

ARGC

Fjöldi röksemdafærslna (ekki innifalið valkosti til gawk , eða forritið).

ARGIND

Vísitalan í ARGV af núverandi skrá sem er unnin.

ARGV

Skipun stjórnargildiargrinda. Stærðin er verðtryggð frá 0 til ARGC - 1. Að breyta breytingum á innihaldi ARGV getur stjórnað þeim skrám sem notaðar eru til gagna.

BINMODE

Á non-POSIX kerfi, tilgreinir notkun `` tvöfaldur '' ham fyrir alla skrá I / O. Talnagildi 1, 2 eða 3, tilgreindu að inntakaskrár, framleiðsla skrár eða allar skrár, hver um sig, ætti að nota tvöfaldur I / O. String gildi "r" , eða "w" tilgreina að inntak skrár, eða framleiðsla skrár, í sömu röð, ætti að nota tvöfaldur I / O. String gildi "rw" eða "wr" tilgreina að allar skrár ættu að nota tvöfaldur I / O. Öll önnur streng gildi eru meðhöndluð sem "rw" , en býr til viðvörunarskilaboð.

CONVFMT

Viðskiptasniðið fyrir tölur, "% .6g" , sjálfgefið.

Umhverfi

Fylki sem inniheldur gildi núverandi umhverfis. Stærðin er verðtryggð af umhverfisbreytur, hver þáttur er gildi þessara breytu (td ENVIRON ["HOME"] gæti verið / heima / arnold ). Breyting á þessu fylki hefur ekki áhrif á umhverfið sem séð er fyrir af forritum sem gawk ræktar með umskiptum eða kerfinu () .

ERRNO

Ef kerfisvandamál eiga sér stað gerist annað hvort að gera redirection fyrir getline , á meðan lesið er fyrir getline eða í lok () , þá mun ERRNO innihalda streng sem lýsir villunni. Verðmæti er háð þýðingu á ensku ensku.

FIELDWIDTHS

Hvítt-rými aðskilin lista yfir sviðbreidd. Þegar setur, greip gawk inntakið inn í reitir af fastri breidd, í stað þess að nota gildi FS breytu sem reitarsvið.

SKRÁARNAFN

Heiti núverandi innsláttarskrár. Ef engin skrá er tilgreind á stjórn línunnar er gildi FILENAME `` - ''. Hins vegar er FILENAME óskilgreint inni í byrjunarliðinu (nema sett sé með fínstillingu ).

FNR

Inntakaskráarnúmerið í núverandi innsláttarskránni.

FS

Innsláttarsviðarseparanum, bil sjálfgefið. Sjá svið , hér fyrir ofan.

IGNORECASE

Stýrir tilfelli næmi allra reglulega tjáningar og strengar aðgerðir. Ef IGNORECASE hefur gildi sem ekki er núll, þá er samanburður á strengi og mynstur samsvörun í reglum, skiptingarsvið með FS , skrá aðgreining með RS , regluleg tjáning sem samsvarar ~ og ! ~ Og gensub () , gsub () , vísitölu () , samsvörun () , split () og sub () innbyggðar aðgerðir virka öll ógnin við venjulegar tjáningaraðgerðir. ATHUGIÐ: Áskriftarritun hefur ekki áhrif, né heldur er asort () virka.

Svona, ef IGNORECASE er ekki jafnt og núll, / aB / passar öll strengin "ab" , "aB" , "Ab" og "AB" . Eins og með allar AWK breytur er upphafsgildi IGNORECASE núll, þannig að allar reglulegar segðir og strengar aðgerðir eru yfirleitt hástafamengandi . Undir Unix er fullur ISO 8859-1 latneskur-1 stafasettur notaður þegar hann hafnar málinu.

LINT

Veitir dynamic stjórn á --lint valkostinum innan AWK forrit. Þegar satt, prentar gawk lint viðvaranir. Þegar falskur er það ekki. Þegar úthlutað er strengsgildi "banvæn" verða léttar viðvaranir að verða banvænar villur, nákvæmlega eins og - lint = banvæn . Öll önnur sönn gildi skrifa bara viðvaranir.

NF

Fjöldi sviða í núverandi innsláttarskrá.

NR

Heildarfjölda innsláttarskrár sem sjást hingað til.

OFMT

Framleiðsla snið fyrir tölur, "% .6g" , sjálfgefið.

OFS

Afritarsviðarseparanum, bil sjálfgefið.

ORS

Upptökutapskiljan, sjálfgefið nýjan línu.

PROCINFO

Þættirnir í þessu fylki veita aðgang að upplýsingum um að keyra AWK forritið. Í sumum kerfum geta verið þættir í fylkinu, "group1" í gegnum "group n " fyrir suma n , sem er fjöldi viðbótarhópa sem ferlið hefur. Notaðu í rekstraraðila til að prófa þessa þætti. Eftirfarandi þættir eru tryggðar að vera til staðar:

PROCINFO ["egid"]

verðmæti getegid (2) símtalið.

PROCINFO ["euid"]

verðmæti geteuid (2) kerfis símtala.

PROCINFO ["FS"]

"FS" ef reitarsvæði með FS er í gildi, eða "FIELDWIDTHS" ef reit er skipt í FIELDWIDTHS .

PROCINFO ["gid"]

verðmæti getgid (2) kerfis símtala.

PROCINFO ["pgrpid"]

ferlið hóp auðkenni núverandi ferli.

PROCINFO ["pid"]

ferli auðkenni núverandi ferli.

PROCINFO ["ppid"]

Aðalferli auðkenni núverandi ferli.

PROCINFO ["uid"]

verðmæti getuid (2) kerfis símtal.

RS

Innsláttarskilgreiningarkerfið, sjálfgefið nýja línu.

RT

Upptökutækið. Gawk setur RT í innsláttartexta sem samsvarar eðli eða reglulegri tjáningu sem tilgreind er af RS .

RSTART

Vísitala fyrsta stafsins sem passar við samsvörun () ; 0 ef ekki samsvörun. (Þetta felur í sér að eðli vísitölur byrja á einum.)

RLENGTH

Lengd strengsins passa við samsvörun () ; -1 ef engin samsvörun.

SUBSEP

Eðli sem notað er til að aðgreina margar áskriftir í fylkiseiningum, sjálfgefið "\ 034" .

TEXTDOMAIN

Textalén AWK forritsins; notað til að finna staðbundnar þýðingar fyrir strengi forritsins.

Fylki

Raðræður eru áletrandi með tjáningu milli fermetra sviga ( [ og ] ). Ef tjáningin er tjáningarlisti ( expr , expr ...) þá er fylkiáskriftin strengur sem samanstendur af samdrætti (strengur) gildi hvers tjáningar, aðskilin með gildi SUBSEP breytu. Þessi aðstaða er notuð til að líkja eftir margföldum víddum. Til dæmis:

i = "A"; j = "B"; k = "C"
x [ég, j, k] = "halló, heimurinn \ n"

úthlutar strenginum "halló, heimur \ n" til þáttarins í fylkinu x sem er vísitölu með strenginum "A \ 034B \ 034C" . Allir fylki í AWK eru tengdir, þ.e. verðtryggð með strengagildi.

Sérstakur rekstraraðili má nota í ef eða á meðan yfirlýsingu til að sjá hvort fylki hefur vísitölu sem samanstendur af tilteknu gildi.

ef (val í fylki) prenta array [val]

Ef fylkið hefur margar áskriftir, notaðu (i, j) í array .

Í byggingu má einnig nota í lykkju til að endurtekna yfir alla þætti í fylki.

Eining getur verið eytt úr fylki með því að nota Eyða yfirlýsingu. Eyða yfirlýsingunni má einnig nota til að eyða öllu innihaldi fylkingar, bara með því að tilgreina fylkið nafn án áskriftar.

Variable Vélritun og viðskipta

Variables og reitir geta verið (fljótandi punktar) tölur, eða strengir eða báðir. Hvernig gildi breytu er túlkað fer eftir samhengi þess. Ef það er notað í tölulegum tjáningum verður það meðhöndlað sem númer, ef það er notað sem strengur verður það meðhöndlað sem strengur.

Til að þvinga breytu til að meðhöndla sem númer skaltu bæta við 0 við það; að þvinga það til að meðhöndla sem strengur, sameina það með núllstrengnum.

Þegar strengur verður að breyta í númer, er viðskiptin náð með því að nota strtod (3). Númer er breytt í streng með því að nota gildi CONVFMT sem sniði fyrir sprintf (3), með tölugildi breytu sem rök. Þrátt fyrir að öll tölur í AWK séu fljótandi, eru samtals gildi alltaf breytt sem heilar tölur. Þannig gefinn

CONVFMT = "% 2.2f" a = 12 b = a ""

breytu b hefur streng gildi "12" og ekki "12,00" .

Gawk framkvæmir samanburð á eftirfarandi hátt: Ef tveir breytur eru tölfræðilegar samanstendur þær tölulega. Ef eitt gildi er talað og hitt hefur streng gildi sem er `` tölustafstrengur, '' þá eru samanburður einnig gerðar tölulega. Annars er tölugildið breytt í streng og strengjamæling er gerð. Tvær strengir eru bornar saman, að sjálfsögðu, eins og strengir. Athugaðu að POSIX staðalinn gildir hugtakið `` tölustafstrengja '' alls staðar, jafnvel við strengjafyrirtæki. Hins vegar er þetta greinilega rangt og gawk gerir þetta ekki. (Sem betur fer er þetta föst í næstu útgáfu staðalsins.)

Athugaðu að strengur, eins og "57" , eru ekki tölfræðilegir strengir, þau eru strengjafyrirtæki. Hugmyndin um `` tölustafstreng '' gildir aðeins um reitir, getline inntak, FILENAME , ARGV þætti, ENVIRON þætti og þætti í fylki sem búin er til með split () sem eru tölfræðilegir strengir. Grundvallar hugmyndin er að notandi inntak , og aðeins notandi inntak, sem lítur út tölfræðilega, ætti að meðhöndla þannig.

Uninitialized breytur hafa tölugildi 0 og streng gildi "" (null eða tómt streng).

Octal og Hexadecimal Constants

Byrjað er á útgáfu 3.1 af gawk, getur þú notað C-stíl oktal og sextíu og fimmtíu fastar í AWK program uppspretta merkjamál. Til dæmis er octal gildi 011 jafnt aukastaf 10 og hexadecimalt gildi 0x11 er jafnt aukastaf 17.

String Constants

Stringsþættir í AWK eru raðir stafi sem eru á milli tvívitna ( " ). Innan strengja eru ákveðnar flugserðir þekktir eins og í C. Þetta eru:

\\

A bókstaflega bakslag.

a

The '' viðvörun '' staf; venjulega ASCII BEL stafurinn.

\ b

backspace.

\ f

form-fæða.

\ n

newline.

\ r

flutning aftur.

\ t

lárétt flipi.

\ v

lóðrétt flipi.

\ x hex tölustafi

Eðli táknað með strengi sextíu tölustafa eftir \ x . Eins og í ANSIC eru öll eftirfarandi tólfta tölustafar talin hluti af flóttamynstri. (Þessi eiginleiki ætti að segja okkur eitthvað um hönnun tungumála nefndarinnar.) Til dæmis er "\ x1B" ASCIIESC (flýja) stafinn.

\ ddd

Eðli táknað með 1, 2, eða 3 stafa röð oktal stafa. Til dæmis, "\ 033" er ASCII ESC (flýja) stafinn.

\ c

Bókstaflega stafurinn c .

The flýja röð getur einnig verið notaður innan stöðugrar reglulegrar tjáningar (td / [\ t \ f \ n \ r \ v] / passar hvítaspjald stafi).

Í eindrægni ham eru táknin táknuð með octal og hexadecimal flýja raðir bókstaflega þegar þau eru notuð í venjulegum tjáningartíma. Svona, / a \ 52b / jafngildir / a \ * b / .

Mynstur og aðgerðir

AWK er línuleg tungumál. Mynsturinn kemur fyrst og síðan aðgerðin. Aðgerðir eru settar fram í { og } . Annaðhvort má vantar mynstur, eða aðgerðin vantar, en auðvitað, ekki bæði. Ef mynsturið vantar er aðgerðin framkvæmd fyrir hvert einstakt skrá yfir inntak. Að vantar aðgerð samsvarar

{prenta}

sem prentar allt plötuna.

Athugasemdir byrja með `` # '' stafnum og halda áfram til loka línunnar. Leynilegar línur má nota til að aðgreina yfirlýsingar. Yfirleitt lýkur yfirlýsing með newline, en þetta á ekki við um línur sem endar í ``, '', { ?? , : , && , eða || . Línur sem ljúka að gera eða annars hafa yfirlýsingar þeirra sjálfkrafa haldið áfram á eftirfarandi línu. Í öðrum tilvikum er hægt að halda áfram línunni með því að ljúka því með ', en þá mun nýjan línu verða hunsuð.

Hægt er að setja margar yfirlýsingar á einum línu með því að skilja þau með ``; ''. Þetta á við um bæði yfirlýsingar innan aðgerða hluta mynstur-aðgerða par (venjulega málið) og til mynstur-aðgerð yfirlýsingar sjálfir.

Mynstur

AWK mynstur geta verið eitt af eftirfarandi:

Byrjaðu END / venjulegur tjáning / samskiptatengslarmynstur && mynstur mynstur || mynstur mynstur ? mynstur : mynstur ( mynstur ) ! mynstur mynstur1 , mynstur2

BEGIN og END eru tvö sérstök konar mynstur sem eru ekki prófuð gegn inntakinu. Aðgerðir hlutar allra BEGIN mynstur eru sameinuð eins og ef allar yfirlýsingar voru skrifaðar í einu BEGIN blokk. Þeir eru framkvæmdar áður en eitthvað af inntakinu er lesið. Á sama hátt eru öll END- blokkir sameinuð og framkvæmd þegar öll inntak er búinn (eða þegar útreikningur er framkvæmdur). BEGIN og END mynstur geta ekki verið sameinuð með öðru mynstri í tjáningarmynstri. BEGIN og END mynstur geta ekki haft vantar hlutdeildarhlutverk.

Fyrir / regluleg tjáning / mynstur er viðkomandi yfirlýsing framkvæmd fyrir hverja innslátt sem samsvarar venjulegri tjáningu. Venjuleg tjáning er sú sama og í egrep (1), og er tekin saman hér að neðan.

Samskiptatækni getur notað eitthvað af rekstraraðilum sem eru skilgreindar hér að neðan í hlutanum um aðgerðir. Þessar prófanir mæla yfirleitt hvort tiltekin reiti passa við ákveðnar reglulegar segðir.

The && , || , og ! rekstraraðilar eru rökrétt OG, rökrétt EÐA, og rökrétt EKKI, hver um sig, eins og í C. Þeir gera skammhlaupsmat, einnig eins og í C, og eru notaðir til að sameina fleiri frumstæðar mynsturútskýringar. Eins og á flestum tungumálum er hægt að nota sviga til að breyta röð matsins.

The :: rekstraraðili er eins og sama rekstraraðili í C. Ef fyrsta mynstrið er satt þá er mynsturið sem notað er til prófunar annað mynstur, annars er það þriðja. Aðeins eitt af öðru og þriðja mynstur er metið.

Mynstur1 , mynstur2 formi tjáningar er kallað sviðsmynstur . Það passar öll innsláttarskrár sem byrja á skrá sem samsvarar mynstur1 og heldur áfram þar til skrá sem passar við mynstur2 , innifalið. Það er ekki samblandt við neina aðra tjáningu mynstur.

Venjulegur tjáning

Venjuleg tjáning er útbreidd tegund sem finnast í egrep . Þau eru samsett úr stafi sem hér segir:

c

passar við non-metacharacter c .

\ c

passar við bókstafstafann c .

.

passar við hvaða staf þar á meðal newline.

^

passar upphaf strengsins.

$

passar við enda strengsins.

[ abc ... ]

stafalisti, samsvarar einhverjum stafunum abc ....

[^ abc ... ]

neikvæð stafalisti, passar við hvaða staf sem er nema abc ....

r1 | r2

skiptis: passar annaðhvort r1 eða r2 .

r1r2

sameining: passar r1 og síðan r2 .

r +

passar einn eða fleiri r .

r *

passar núll eða fleiri r 's.

r ?

passar núll eða einn r 's.

( r )

hópur: passar r .

r { n }

r { n ,}

r { n , m } Eitt eða tveir tölur inni í brjóstum tákna bilstutt . Ef það er eitt númer í handfangið, er fyrri regluleg tjáning r endurtekin n sinnum. Ef tveir tölur eru aðskilin með kommu er endurtekin n til m sinnum. Ef það er eitt númer fylgt eftir með kommu, þá er endurtekið r að minnsta kosti n sinnum.

Tíðni tjáningar eru aðeins tiltækar ef annað hvort --posix eða --re-interval er tilgreint á stjórn línunnar.

y

passar við tóma strenginn annaðhvort upphaf eða lok orðsins.

\ B

passar við tóma strenginn í orði.

\ <

passar við tóma strenginn í upphafi orða.

\>

passar við tóma strenginn í lok orðsins.

\ w

passar við hvaða stafhluta staf (stafur, tölustafi eða undirstrikun).

\ W

passar við hvaða staf sem er ekki orðstakt.

\ "

passar við tóma strenginn í byrjun biðminni (strengur).

\ '

passar við tóman streng við lok biðminni.

Flugsættin, sem gilda í strengjafyrirtækjum (sjá hér að neðan), gilda einnig í reglulegum tjáningum.

Einstaklingar eru nýjar eiginleikar kynntar í POSIX staðlinum. Einstaklingsflokkur er sérstakt tákn til að lýsa lista yfir stafi sem hafa sérstaka eiginleika, en þar sem raunveruleg stafi sjálfir geta verið breytileg frá landinu til landsins og / eða frá eðli sem er stillt á stafatöflu. Til dæmis er hugmyndin um hvað stafræn staf er ólík í Bandaríkjunum og Frakklandi.

Einstaklingur er eingöngu gildur í reglulegri tjáningu inni í sviga á stafalista. Eðli flokkar samanstanda af [: , leitarorð sem gefur til kynna bekkinn, og :] . Einstaklingarnir skilgreindir af POSIX staðlinum eru:

[: alnum:]

Stafahópar.

[: alfa:]

Stafrófstafir.

[: blank:]

Rúm eða flipa stafi.

[: cntrl:]

Stjórna stöfum.

[: stafa:]

Tölur stafir.

[: graph:]

Stafir sem eru bæði prentanleg og sýnileg. (Rýmið er prentað, en ekki sýnilegt, en a er bæði.)

[: lægra:]

Lítið stafræn stafatákn.

[: prenta:]

Prentvæn stafi (stafi sem ekki eru stýringar stafir.)

[: punct:]

Greinarmerki (stafi sem ekki eru bréf, tölustafir, stýritákn eða rúmstafir).

[: pláss:]

Rúmstafir (eins og pláss, flipi og formmat, til að nefna nokkrar).

[: efri:]

Efsta stafinn stafatákn.

[: xdigit:]

Stafir sem eru sex stafa tölustafir.

Til dæmis, fyrir POSIX staðalinn, til að passa við tölustafatákn, myndirðu hafa þurft að skrifa / [A-Za-z0-9] / . Ef stafatáknin þín höfðu aðrar stafatákn í henni, myndi þetta ekki passa við þá, og ef persónan þín samdi öðruvísi en ASCII, gæti þetta ekki einu sinni passað við ASCII tölustafi stafina. Með POSIX eðli bekknum er hægt að skrifa / [[: alnum:]] / , og þetta passar við stafrófsröð og tölustafi í stafatöflunni.

Tveir viðbótarröðvar geta birst í persónulistum. Þetta gildir um non-ASCII stafatöflur, sem geta haft einnar tákn (kallað samanburðarþættir ) sem eru táknuð með fleiri en einum staf, auk nokkurra stafa sem jafngildir samsvörun eða flokkun. (Td á frönsku er látlaus '`e' 'og gröf-hreim e` jafngild.)

Söfnun tákn

Samsvörunartákn er multi-stafur samsvörun þáttur sem fylgir í [. og .] . Til dæmis, ef ch er samhverfur þáttur, þá er [[.ch.]] Venjulegur tjáning sem passar við þessa samsvörun, en [ch] er venjulegur tjáning sem passar annaðhvort c eða h .

Jafngildisflokkar

Jafngildisflokkur er staðbundið sérheiti fyrir lista yfir samsvarandi stafi. Nafnið er meðfylgjandi í [= og =] . Til dæmis gæti nafnið e verið notað til að tákna alla `` e, '' `` e ',' 'og `` e`.' 'Í þessu tilviki er [[= e =]] regluleg tjáning sem passar einhverju e , e ' eða e` .

Þessir eiginleikar eru mjög mikilvægar í tungumálum sem ekki er ensku. Bókasafnið virkar sem gawk notar til reglulegrar tjáningar sem aðeins þekkja aðeins POSIX persónuskilríki; Þeir viðurkenna ekki samhliða tákn eða jafngildisflokka.

The \ Y , \ B , \ < , \> , \ w , \ W , \ , og \ ' rekstraraðilar eru sérstaklega að gawk ; Þeir eru viðbætur byggðar á aðstöðu í GNU reglulegum tjáningarbókasöfnum.

Hinar ýmsu stjórnunarvalkostir stjórna hvernig gawk túlkar stafi í reglulegum tjáningum.

Engar valkostir

Í sjálfgefna tilfelli, veita gawk allar aðstöðu POSIX reglulegrar tjáningar og theGNU reglulega tjáning rekstraraðila lýst hér að ofan. Hins vegar eru bil tjáning ekki studd.

--posix

Aðeins POSIX reglulegar segðir eru studdar, GNU-rekstraraðilar eru ekki sérstakar. (Eg, \ w passar við bókstaflega w ). Tíðni tjáningar er leyfilegt.

--Traditional

Hefðbundin Unix awk venjulegur tjáning er samsvörun. GNU-rekstraraðilar eru ekki sérstakar, bilstuttar eru ekki tiltækir, né heldur eru POSIX- persónaklasarnir ( [[: alnum:]] og svo framvegis). Stafir sem lýst er með octal og hexadecimal flýja röð eru meðhöndluð bókstaflega, jafnvel þótt þeir tákna reglulega tjá metacharacters.

--re-bil

Leyfa tímabundna tjáningu í reglulegum tjáningum, jafnvel þótt - hefðbundin sé veitt.

Aðgerðir

Aðgerðirnar eru meðfylgjandi í handfangi, { og } . Aðgerðir yfirlýsingar samanstanda af venjulegum verkefnum, skilyrðum og kröftuglegum yfirlýsingum sem finnast á flestum tungumálum. Rekstraraðilar, stjórn yfirlýsingar og inntak / framleiðsla yfirlýsingar í boði eru mynstraðar eftir þeim í C.

Flugrekendur

Rekstraraðilar í AWK, í samræmi við minnkandi forgang, eru

( ... )

Flokkun

$

Field tilvísun.

++ -

Aukning og lækkun, bæði forskeyti og eftirnafn.

^

Exponentiation ( ** má einnig nota og ** = fyrir verkefnisstjóra).

+ -!

Unary plús, unary mínus og rökrétt neitun.

* /%

Margföldun, skipting og virkni.

+ -

Viðbót og frádráttur.

pláss

String samskeyti.

<>

<=> =

! = == Reglulegir samskiptafyrirtækin.

~! ~

Venjulegur tjáning passa, negated samsvörun. ATHUGIÐ: Notaðu ekki fasta reglulega tjáningu ( / foo / ) á vinstri hliðinni á ~ eða ! ~ . Notaðu aðeins einn á hægri hlið. Tjáningin / foo / ~ exp hefur sömu merkingu og (($ 0 ~ / foo /) ~ exp ) . Þetta er venjulega ekki það sem ætlað var.

í

Array aðild.

&&

Rökrétt og.

||

Rökrétt OR.

?:

C skilyrt tjáning. Þetta hefur formið expr1 ? expr2 : expr3 . Ef expr1 er satt er gildi tjáningarinnar expr2 , annars er það expr3 . Aðeins eitt af expr2 og expr3 er metið.

= + = - =

* = / =% = ^ = Verkefni. Bæði alger verkefni ( var = gildi ) og rekstrar-verkefni (önnur form) eru studd.

Stjórnartillögur

Eftirlitsyfirlýsingarnar eru sem hér segir:

ef ( ástand ) yfirlýsing [ annað yfirlýsingu ] meðan ( skilyrði ) yfirlýsingu gera yfirlýsingu á meðan ( skilyrði ) fyrir ( expr1 ; expr2 ; expr3 ) yfirlýsingu fyrir ( var í array ) yfirlýsingar }

I / O yfirlýsingar

Inntak / framleiðsla yfirlýsingar eru sem hér segir:

loka ( skrá [ , hvernig ] )

Lokaðu skrá, pípa eða samvinnu. Valfrjálst hvernig ætti aðeins að nota við lokun einum enda tvíhliða pípa til samvinnslu. Það verður að vera strengur gildi, annað hvort "til" eða "frá" .

getline

Setja $ 0 frá næsta innsláttarskrá; settu NF , NR , FNR .

getline < skrá

Setja $ 0 frá næsta skrá yfir skrá ; settu NF .

getline var

Set var var frá næsta inntakaskrá; sett NR , FNR .

getline var < skrá

Set var frá næsta skrá yfir skrá .

stjórn | getline [ var ]

Hlaupa stjórn leiðsla framleiðsla annaðhvort í $ 0 eða var , eins og að ofan.

stjórn | & getline [ var ]

Hlaupa stjórn sem samvinnuferli leiða framleiðsluna annaðhvort í $ 0 eða var , eins og að ofan. Samstarfsferli eru gawk eftirnafn.

næsta

Hættu að vinna með núverandi innsláttarskrá. Næsta innsláttarrit er lesið og vinnsla hefst með fyrsta mynstri í AWK forritinu. Ef endalok inntaksgagna er náð verða END- blokkirnar, ef einhver eru, framkvæmd.

nextfile

Hættu að vinna með núverandi innsláttarskrá. Næsta innsláttarrit lesið kemur frá næsta innsláttarskrá. FILENAME og ARGIND eru uppfærðar, FNR er endurstillt á 1 og vinnsla byrjar á fyrsta mynstur í AWK forritinu. Ef endalok inntaksgagna er náð verða END- blokkirnar, ef einhver eru, framkvæmd.

prenta

Prentar núverandi skrá. Framleiðsla skrá er hætt með gildi ORS breytu.

prenta expr-lista

Prentar tjáning. Hver tjáning er aðskilin með gildi OFS breytu. Framleiðsla skrá er hætt með gildi ORS breytu.

prenta expr-list > skrá

Prentar tjáning á skrá . Hver tjáning er aðskilin með gildi OFS breytu. Framleiðsla skrá er hætt með gildi ORS breytu.

printf fmt, expr-listi

Sniðið og prenta.

printf fmt, expr-list > skrá

Sniðið og prenta á skrá .

kerfi ( cmd-lína )

Framkvæma skipunina cmd-lína og skilaðu lokunarstöðu. (Þetta gæti verið ekki í boði á POSIX kerfi.)

fflush ( [ skrá ] )

Skolaðu einhverja biðminni í tengslum við opinn framleiðsla skrá eða pípa skrá . Ef skrá vantar, þá er staðlað framleiðsla skola. Ef skráin er null strengurinn, þá eru allar opnar framleiðsla skrár og pípur hylkingar þeirra skola.

Viðbótarupplýsingar umframleiðbeiningar eru leyfðar fyrir prentun og prentun .

prenta ... >> skrá

bætir framleiðsla við skrána .

prenta ... | stjórn

skrifar á pípu.

prenta ... | & stjórn

sendir gögn til samvinnu.

The getline skipunin skilar 0 í lok skráar og -1 við villu. Við villu inniheldur ERRNO streng sem lýsir vandamálinu.

ATHUGIÐ: Ef þú notar pípa eða samvinnu til að fá línu , eða frá prenti eða prenta í lykkju, verður þú nota loka () til að búa til nýjar tilraunir í stjórninni. AWK lokar ekki sjálfkrafa rör eða samvinnslu þegar þau koma aftur á EOF.

The printf Yfirlýsing

The AWK útgáfur af printf yfirlýsingu og sprintf () virka (sjá hér að neðan) samþykkja eftirfarandi viðskipti forskrift snið:

% c

ASCII staf. Ef rökið sem notað er fyrir % c er talað er það meðhöndlað sem staf og prentað. Annars er gert ráð fyrir að rifin sé strengur og eini fyrsta stafur þessarar strengar er prentaður.

% d , % i

A aukastaf tala (heiltala hluti).

% e,% E

Fljótandi punktur myndarinnar [-] d.dddddde [+ -] dd . Formið % E notar E í stað e .

% f

Fljótandi punktur myndarinnar [-] ddd.dddddd .

% g,% G

Notaðu % e eða % f viðskipti, hvort sem er styttri, með óverulegum núllum bæla. Gildið % G notar % E í stað % e .

% o

Óundirritað oktalnúmer (einnig heiltala).

% u Óáritað aukastaf númer (aftur, heiltala).

% s

Einstaklingsstrengur.

% x,% X

Óundirritað sex stafa tala (heiltala). The % X snið notar ABCDEF í stað abcdef .

%%

Einstaklingur % stafur; engin rök er breytt.

Valfrjálst, viðbótarbreytur kunna að liggja á milli % og stjórnbréfsins:

telja $

Notaðu töluþráðurinn á þessum tímapunkti í forminu. Þetta er kallað positional specifier og er ætlað fyrst og fremst til notkunar í þýddum útgáfum af strengjastrengjum, ekki í upprunalegu texta AWK forrita. Það er gawk eftirnafn.

-

Tjáningin ætti að vera vinstri-réttlætanleg innan síns sviði.

pláss

Fyrir tölusambönd, forskeyti jákvæð gildi með plássi og neikvæðu gildi með mínusmerki.

+

Plús táknið, sem notað er fyrir breiddarbreytinguna (sjá hér að neðan), segir alltaf að gefa merki fyrir tölusamskipti, jafnvel þó að gögnin sem á að formatja séu jákvæð. + Overrides plássbreytinguna.

#

Notaðu `` annað form '' fyrir tilteknar stýringar. Fyrir % o , gefðu leiðandi núll. Fyrir % x , og % X , gefðu leiðandi 0x eða 0X fyrir nonzero niðurstöðu. Fyrir % e , % E og % f inniheldur niðurstaðan alltaf aukastaf. Fyrir % g , og % G , niðursveiflur eru ekki fjarlægðar úr niðurstöðunni.

0

Leiðandi 0 (núll) virkar sem fána, sem gefur til kynna að framleiðsla ætti að vera fyllt með núll í stað rýma. Þetta á einnig við um ótöluleg framleiðsla snið. Þessi fána hefur aðeins áhrif þegar svæðisbreiddin er meiri en það gildi sem á að prenta.

breidd

Vettvangurinn ætti að vera púði til þessa breiddar. Reitinn er venjulega púður með rými. Ef 0 fáninn hefur verið notaður er hann hylur með núllum.

. fyrirfram

Númer sem tilgreinir nákvæmni til notkunar þegar prentun er notuð. Fyrir % e , % E , og % f snið, þetta tilgreinir fjölda tölustafa sem þú vilt prenta til hægri við tugabrot. Fyrir % g , og % G snið, tilgreinir það hámarksfjölda verulegra tölustafa. Fyrir % d , % o , % i , % u , % x og % X snið, tilgreinir það lágmarksfjölda stafa til að prenta. Fyrir % s , tilgreinir það hámarksfjölda stafa úr strenginum sem á að prenta.

The dynamic breidd og nákvæmni getu ANSI C printf () venjur eru studdar. A * í stað ýmissa breiddar eða nákvæmra forskriftirnar veldur því að gildi þeirra séu tekin úr rökalistanum til prenta eða sprintf () . Til að nota staðsetningarákvörðun með breytilegu breidd eða nákvæmni, gefðu upp fjölda $ eftir * í sniði strengsins. Til dæmis, "% 3 $ * 2 $. * 1 $ s" .

Sérstök skráarnöfn

Þegar ég geri I / O umskiptingu frá annaðhvort prenta eða printf í skrá, eða í gegnum skrá frá skrá, viðurkennir gawk tilteknar sérstakar skráarnyndir innbyrðis. Þessar skráarnöfn leyfa aðgangi að opnum skráareiningum sem eruðir frá gawk 's foreldraferli (venjulega skel). Þessar skráarheiti geta einnig verið notaðir á stjórn línunnar til að nefna gagnaskrár. Skráarnafnin eru:

/ dev / stdin

Staðalinntakið.

/ dev / stdout

Staðal framleiðsla.

/ dev / stderr

Staðall villa framleiðsla.

/ dev / fd / n

Skráin sem tengist opinni skráarlýsingu n .

Þetta eru sérstaklega gagnlegar fyrir villuboð. Til dæmis:

prenta "þú blés það!" > "/ dev / stderr"

en þú ættir annars að nota

prenta "þú blés það!" | "köttur 1> & 2"

Eftirfarandi sérstaka skráarnöfn má nota með & & co-ferli rekstraraðila til að búa til TCP / IP netkerfi.

/ inet / tcp / lport / rhost / rport

Skrá fyrir TCP / IP tengingu á staðbundnum höfn lport til fjarlægur gestgjafi rhost á fjarlægri höfn rport . Notaðu höfn með 0 til að láta kerfið velja höfn.

/ inet / udp / lport / rhost / rport

Svipað, en nota UDP / IP í stað TCP / IP.

/ inet / raw / lport / rhost / rport

Fyrirvara fyrir framtíðarnotkun.

Aðrir sérstakar heiti skráa veita aðgang að upplýsingum um gangandi gawk ferlið. Þessar skrár eru nú úreltar. Notaðu PROCINFO array til að fá upplýsingar sem þeir veita. Skráarnafnin eru:

/ dev / pid

Að lesa þessa skrá skilar ferli auðkenni núverandi ferils, í tugabroti, lýkur með newline.

/ dev / ppid

Með því að lesa þessa skrá skilarðu foreldraferli auðkenni núverandi ferils, í tugabroti, lýkur með newline.

/ dev / pgrpid

Að lesa þessa skrá skilar ferli hóp auðkenni núverandi ferli, í tugabroti, lýkur með newline.

/ dev / notandi

Að lesa þessa skrá skilar einu uppriti sem hætt er með newline. Reitarnir eru aðskilin með bilum. $ 1 er verðmæti getuid (2) símtalið, $ 2 er verðmæti geteuid (2) kerfis símtalsins, $ 3 er gildi getgid (2) kerfisímtalið og $ 4 er gildi getegid (2) símtal. Ef einhver viðbótar reitir eru, þá eru þau auðkenni hópsins sem skilað er eftir hópum (2). Ekki er hægt að styðja við marga hópa á öllum kerfum.

Numeric Aðgerðir

AWK hefur eftirfarandi innbyggða reikningsstarfsemi:

atan2 ( y , x )

Skilar arctangent y / x í radíunum.

cos ( expr )

Skilar cosínus expr , sem er í radíðum.

exp ( expr )

The veldishraða.

int ( expr )

Afturkennir heiltala.

log ( expr )

Eðlilegur lógaritmafræðingur.

rand ()

Skilar handahófi frá 0 til 1.

synd ( expr )

Skilar sinus expr , sem er í radíðum.

sqrt ( expr )

Torgið rót virka.

srand ( [ expr ] )

Notar expr sem nýtt fræ fyrir handahófi fjölda rafallar. Ef ekki er kveðið á um expr , þá er dagurinn notaður. Afturvirði er fyrra fræið fyrir handahófi númeraliðann.

String Aðgerðir

Gawk hefur eftirfarandi innbyggða strengar aðgerðir:

asort ( s [ , d ] )

Skilar fjölda þætti í uppsprettu s . Innihald s er flokkað með venjulegum reglum gawk til að bera saman gildi og vísitölur af raðgreindum gildum s er skipt út fyrir raðgreindar heiltölur sem byrja á 1. Ef valfrjálst áfangasvið d er tilgreint þá er s fyrst afritað í d , og þá er d flokkað, þannig að vísitölur uppsprettunarins eru óbreyttir.

gensub ( r , s , h [ , t ] )

Leita að miða strengnum t fyrir samsvörun reglulegrar tjáningar r . Ef h er strengur sem byrjar með g eða G , skiptu síðan öllum samsvörum r með s . Annars er h númer sem gefur til kynna hvaða samsvörun r er í staðinn. Ef t er ekki til staðar er $ 0 notað í staðinn. Innan textans s er hægt að nota raðinn \ n , þar sem n er tölustafi frá 1 til 9, til að gefa til kynna aðeins textann sem passaði við n'th parenthesized subexpression. Röðin \ 0 táknar alla samsvörun texta, eins og stafurinn & . Ólíkt sub () og gsub () er breytt strengurinn skilinn sem afleiðing af aðgerðinni og upphafsstaðlinan er ekki breytt.

gsub ( r , s [ , t ] )

Fyrir hvert substring sem passar við reglulega tjáningu r í strengnum t , skiptu um strenginn s og skila fjölda skipta. Ef t er ekki til staðar skaltu nota $ 0 . An & í staðinn er skipt út fyrir texta sem var í raun samsvörun. Notaðu \ og til að fá bókstaflega & . (Þetta verður að vera skrifað sem "\\ &" ; sjá GAWK: Árangursrík AWK Forritun til að fá nánari umfjöllun um reglur um & s og backslashes í staðsetningartexta undir () , gsub () og gensub () .)

vísitala ( s , t )

Skilar vísitölu strengsins t í strengnum s , eða 0 ef t er ekki til staðar. (Þetta felur í sér að eðli vísitölur byrja á einum.)

lengd ( [ s ] )

Skilar lengd strengsins s , eða lengd $ 0 ef s er ekki til staðar.

passa ( s , r [ , a ] )

Skilar stöðu í s þar sem venjulegur tjáning r kemur fyrir eða 0 ef r er ekki til staðar og setur gildi RSTART og RLENGTH . Athugaðu að röksemdafærslan er sú sama og fyrir rekstraraðila: str . Ef fylki er veitt er a hreinsað og þá eru þættir 1 til n fylltir með þeim hlutum sem s passa við samsvarandi hlutfallslegan undirþrýsting í r . O. þátturinn í inniheldur hluti af s sem samsvarar öllum reglulegum tjáningum r .

skipt ( s , a [ , r ] )

Splits strenginn s í fylkið a á venjulegu tjáningunni r , og skilar fjölda reiti. Ef r er sleppt er FS notað í staðinn. Stærðin a er hreinsuð fyrst. Splitting hegðar sér eins vel við sviði skiptingu, sem lýst er hér að ofan.

sprintf ( fmt , expr-listi )

Prentar expr-list eftir fmt , og skilar strengnum sem fylgir.

strtonum ( str )

Skoðar str , og skilar tölum þess. Ef str byrjar með leiðandi 0 , strtonum () gerir ráð fyrir að str sé oktal númer. Ef str byrjar með leiðandi 0x eða 0X , gerir strtonum () ráð fyrir að str sé sextíu tölustafur.

undir ( r , s [ , t ] )

Rétt eins og gsub () , en aðeins fyrsti samsvörunin er skipt út.

substr ( s , ég [ , n ] )

Skilar að mestu n -character substring s sem byrjar á i . Ef n er sleppt er restin af s notuð.

tolower ( str )

Skilar afrit af strengnum str , með öllum stærsta stafi í str þýtt við samsvarandi lágstöfum hliðstæða þeirra. Stafir í stafróf eru óbreytt.

toupper ( str )

Skilar afrit af strengnum str , með öllum lágstöfum í str, þýdd yfir í samsvarandi hliðstæða þeirra. Stafir í stafróf eru óbreytt.

Tími Aðgerðir

Þar sem einn af aðalnotkun AWK forritanna er að vinna úr skrám sem innihalda fréttatilkynningar gefur gawk eftirfarandi aðgerðir til að fá fréttabréf og forsníða þau.

mktime ( datespec )

Rurns datespec í tímamerki með sama formi og skilað af systime () . Datespec er strengur í formi YYYY MM DD HH MM SS [DST] . Innihald strengsins er sex eða sjö tölur sem samsvara hinu sama ár, þ.mt öld, mánuðin 1 til 12, dagurinn í mánuðinum 1 til 31, klukkustund dagsins frá 0 til 23, mínútu frá 0 til 59, og annað frá 0 til 60, og valfrjáls sólarljós. Gildi þessara númera þarf ekki að vera innan tilgreinds sviða; til dæmis, klukkutími -1 þýðir 1 klukkustund fyrir miðnætti. Gert er ráð fyrir að gregoríska dagatalið frá upphafi nulist, árið 0 fyrir árið 1 og ár -1 fyrir árið 0. Tími er gert ráð fyrir að vera í staðartíma. Ef dagsljósið er jákvætt telst tíminn vera sumartími ef núll er gert ráð fyrir að tími sé staðalbúnaður; og ef neikvætt (sjálfgefið), mktime () reynir að ákvarða hvort sumartími er í gildi fyrir tilgreindan tíma. Ef datespec inniheldur ekki næga þætti eða ef tíminn sem kemur út er ekki á bilinu, skilar mktime () -1.

strftime ( [ snið [ , tímastimpill ]] )

Snið tímastimpill í samræmi við forskriftina í sniði. Tímamælinn ætti að vera á sama formi og skilað af systime () . Ef tímaskeyti vantar er núverandi tími dagsins notaður. Ef snið vantar er sjálfgefið snið sem jafngildir dagsetningu framleiðsla (1) notað. Sjá forskrift fyrir aðgerðina strftime () í ANSI C fyrir sniðið sem er tryggt að vera tiltækt. A almenna lén útgáfa af strftime (3) og maður síðu fyrir það koma með gawk ; ef þessi útgáfa var notaður til að byggja upp gawk , þá eru öll viðskiptiin sem lýst er á þessari síðu aðgengileg til gawk.

systime ()

Skilar núverandi tíma dagsins sem fjöldi sekúndna frá tímabilinu (1970-01-01 00:00:00 UTC á POSIX kerfi).

Hlutverksmikilverkanir

Byrjar með útgáfu 3.1 af gawk eru eftirfarandi breytilegar aðgerðir virkar. Þeir vinna með því að breyta tvöföldum nákvæmni fljótandi stig gildi til unsigned lengi heiltala, gera aðgerðina, og þá breyta niðurstöðu aftur til fljótandi benda. Aðgerðirnar eru:

og ( v1 , v2 )

Return the bitwise OG af gildunum sem gefnar eru af v1 og v2 .

compl ( val )

Til baka bitwise viðbót val .

lshift ( val , telja )

Return gildi val , færst til vinstri með því að telja bita.

eða ( v1 , v2 )

Færðu bitwise OR af gildunum sem gefnar eru af v1 og v2 .

rshift ( val , telja )

Return gildi val , færst rétt með því að telja bita.

xor ( v1 , v2 )

Skilaðu bitahlutfallið XOR af gildunum sem gefnar eru af v1 og v2 .

Alþjóðavæðingaraðgerðir

Byrjar með útgáfu 3.1 af gawk , má nota eftirfarandi aðgerðir innan AWK forritsins til að þýða strengi í hlaupum. Nánari upplýsingar er að finna í GAWK: Árangursrík AWK Forritun .

bindtextdomain ( skrá [ , domain ] )

Tilgreinir möppuna þar sem gawk leitar að .mo skrám, ef þeir vilja ekki eða geta ekki verið settir á staðina `` staðlaða '' (td meðan á prófun stendur). Það skilar möppunni þar sem lén er `` bundið. ''

Sjálfgefið lén er gildi TEXTDOMAIN . Ef skrá er null strengur ( "" ), þá binder bindtextdomain () á núverandi bindingu fyrir tiltekið lén .

dcgettext ( strengur [ , lén [ , flokkur ]] )

Skilar þýðingunni á strengi í lén léns fyrir staðbundið flokki . Sjálfgefið gildi fyrir lén er núverandi gildi TEXTDOMAIN . Sjálfgefið gildi fyrir flokk er "LC_MESSAGES" .

Ef þú gefur gildi fyrir flokk , verður það að vera strengur jafngildur einum af þekktum staðbundnum flokkum sem lýst er í GAWK: Árangursrík AWK Forritun . Þú verður einnig að gefa upp texta lén. Notaðu TEXTDOMAIN ef þú vilt nota núverandi lén.

dcngettext (streng1 , streng2 , númer [ , lén [ , flokkur ]] )

Skilar fleirtöluformi sem er notað fyrir fjölda þýðinga á strengi1 og strengi2 í lén léns fyrir staðbundið flokki . Sjálfgefið gildi fyrir lén er núverandi gildi TEXTDOMAIN . Sjálfgefið gildi fyrir flokk er "LC_MESSAGES" .

Ef þú gefur gildi fyrir flokk , verður það að vera strengur jafngildur einum af þekktum staðbundnum flokkum sem lýst er í GAWK: Árangursrík AWK Forritun . Þú verður einnig að gefa upp texta lén. Notaðu TEXTDOMAIN ef þú vilt nota núverandi lén.

USER-DEFINED FUNCTIONS

Aðgerðir í AWK eru skilgreindar sem hér segir:

virka nafn ( breytu listi ) { yfirlýsingar }

Aðgerðir eru framkvæmdar þegar þau eru kölluð innan tjáningar í annað hvort mynstur eða aðgerðir. Raunverulegir breytur sem gefnar eru upp í aðgerðarsímtali eru notaðir til að framkvæma formlega breytur sem lýst er í aðgerðinni. Rafeindir eru liðnar með tilvísun, aðrar breytur eru liðnar eftir gildi.

Þar sem aðgerðir voru ekki upphaflega hluti af AWK tungumálinu, er ákvæði fyrir staðbundnar breytur frekar klumpur: Þeir eru lýst sem auka breytur í breytu listanum. Samningurinn er að aðgreina staðbundnar breytur frá raunverulegum breytur með viðbótarrými á breytu listanum. Til dæmis:

virka f (p, q, a, b) # a og b eru staðbundin {...} / abc / {...; f (1, 2); ...}

Vinstri sviga í aðgerðarsamtali er krafist til að fylgjast strax eftir aðgerðarnöfninu, án hvítra rýma. Þetta er til að koma í veg fyrir samsýnilegu tvíræðni við samtengingu rekstraraðila. Þessi takmörkun gildir ekki um innbyggða aðgerðir sem taldar eru upp hér að ofan.

Aðgerðir geta hringt hvort annað og verið endurkvæmar. Virkni breytur sem notuð eru sem staðbundnar breytur eru frumstilla á null strenginn og númerið núll við aðgerð kallað.

Notaðu aftur expr til að skila gildi frá aðgerð. Endurheimtanleg gildi er óskilgreint ef ekkert gildi er veitt, eða ef fallið kemur aftur með `` fallið niður '' enda.

Ef - lint hefur verið veitt, varar gawk um símtöl til óskilgreindra aðgerða á flokka tíma, í stað þess að keyra tíma. Að hringja í óskilgreinda aðgerð á hlaupum tíma er banvæn villa.

Orðið func má nota í stað virka .

DYNAMICALLY LOADING NEW FUNCTIONS

Byrjað er með útgáfu 3.1 af gawk , getur þú bætt virkum nýjum innbyggðum aðgerðum við rennandi gawk túlkann . Allar upplýsingar eru utan umfang þessa handbókarsíðu; sjá GAWK: Árangursrík AWK Forritun fyrir upplýsingar.

framlenging ( hlutur , virkni )

Tengdu samnýttan skrá sem heitir eftir hlut og tengdu virkni í hlutnum til að framkvæma frumstilling. Þetta ætti að vera bæði sem strengir. Skilar gildi sem skilað er af aðgerð .

Þessi aðgerð er veitt og skjalfest í GAWK: Árangursrík AWK Forritun , en allt um þennan möguleika mun líklega breytast í næstu útgáfu. Við mælum eindregið með því að þú notir ekki þessa eiginleika fyrir neitt sem þú ert ekki tilbúin að endurtaka.

SIGNALS

pgawk samþykkir tvö merki. SIGUSR1 veldur því að það er hægt að afrita sniðið og virkni símtalstakkann í sniðaskrána , sem er annaðhvort awkprof.out eða hvaða skrá sem heitir með --profile valkostinum. Það heldur áfram að hlaupa. SIGHUP veldur því að það er hægt að afrita sniðið og virkja símtalstakkann og þá hætta.

Dæmi

Prenta og flokka innskráningarnöfn allra notenda: BEGIN {FS = ":"} {prenta $ 1 | {radíus} } Telja línurnar í skrá: {nlines ++} END {prenta nlines} Forðast hverja línu með númerinu í skránni: {prenta FNR, $ 0} Samtengja og lína númer (breyting á þema): {prenta NR, $ 0}

Innri

Stringsþættir eru raðir stafi sem fylgja með tvöföldum tilvitnunum. Í tungumálum sem ekki er ensku, er hægt að merkja strengi í AWK forritinu þar sem það krefst þýðingu á náttúrulegu náttúrulegu tungumáli. Slíkar strengir eru merktir í AWK forritinu með leiðandi undirstrikun (`` _ ''). Til dæmis,

gawk 'BEGIN {prenta "halló, heimur"}'

Prentar alltaf halló, heimur . En,

gawk 'BEGIN {prenta _ "halló, heimur"}'

gæti prentað bónus, monde í Frakklandi.

Það eru nokkur atriði sem taka þátt í að framleiða og keyra staðbundnar AWK forrit.

1.

BEGIN BEGIN aðgerð til að tengja gildi við TEXTDOMAIN breytu til að stilla textarefnið í nafn sem tengist forritinu þínu.


Byrjaðu {TEXTDOMAIN = "myprog"}

Þetta gerir gawk kleift að finna .mo skrána sem tengjast forritinu þínu. Án þessarar stíls notar gawk textaskilaboðin, sem líklega inniheldur ekki þýðingar fyrir forritið þitt.

2.

Merktu alla strengi sem ætti að þýða með helstu undirstrikum.

3.

Ef nauðsyn krefur, notaðu dcgettext () og / eða bindtextdomain () aðgerðirnar í forritinu, eftir því sem við á.

4.

Hlaupa gawk --gen-po -f myprog.awk> myprog.po til að búa til .po skrá fyrir forritið þitt.

5.

Veita viðeigandi þýðingar og byggðu og settu upp samsvarandi .mo skrá.

Alþjóðavæðingaraðgerðirnar eru lýst í smáatriðum í GAWK: Árangursrík AWK Forritun .

Posix samhæfni

Aðalmarkmiðið fyrir gawk er samhæfni við POSIX staðalinn, sem og nýjustu útgáfuna af UNIX awk . Í þessu skyni felur gawk í sér eftirfarandi notandi sýnilegar aðgerðir sem ekki er lýst í AWK bókinni, en eru hluti af Bell Laboratories útgáfunni af awk og eru í POSIX staðlinum.

Bókin gefur til kynna að skipanalínan breytist þegar awk myndi opna rökið sem skrá, sem er eftir að BEGIN blokkin er framkvæmd. Hins vegar í fyrri framkvæmdum, þegar slíkt verkefni birtist fyrir hvaða skráarnöfn, þá myndi verkefnið eiga sér stað áður en byrjunarblokkurinn var keyrður. Forrit komu að treysta á þessa `` eiginleiki. '' Þegar awk var breytt til að passa skjölin sín var valið -v valkostur til að úthluta breytur áður en forritið var framkvæmd til að mæta forritum sem varða gamla hegðunina. (Þessi aðgerð var samþykkt af bæði Bell Laboratories og GNU verktaki.)

The -W valkostur fyrir framkvæmd sérstakar aðgerðir er frá POSIX staðlinum.

Við vinnslu á rökum notar gawk sérstakan valkost `` - '' til að merkja endann á rökum. Í samhæfingarhami varar það við en gleymir annars óskilgreindum valkostum. Í venjulegum aðgerðum eru slík rök send til AWK forritsins til að hægt sé að vinna úr því.

AWK bókin skilgreinir ekki afturvirði srand () . POSIX staðalinn hefur það skilað frænum sem hann notaði til að halda utan um handahófi númeraröð. Því skilar srand () í gawk einnig núverandi fræ.

Aðrar nýjar aðgerðir eru: Notkun margra -f valkosta (frá MKS awk ); ENVIRON array; the \ , og \ v flýja röð (gert upphaflega í gawk og fed aftur í Bell Laboratories útgáfa); tolower () og toupper () innbyggðir aðgerðir (frá Bell Laboratories útgáfa); og ANSI C viðskipti upplýsingar í printf (gert fyrst í Bell Laboratories útgáfa).

Sögulegir eiginleikar

Það eru tvær aðgerðir af sögulegum AWK útfærslum sem gawk styður. Í fyrsta lagi er hægt að hringja í lengd () innbyggða virkni, ekki aðeins án röks, en jafnvel án sviga! Þannig,

a = lengd # Heilagur Algol 60, Batman!

er það sama og annaðhvort

a = lengd ()
a = lengd ($ 0)

Þessi eiginleiki er merktur sem `` úrfallin '' í POSIX staðlinum og gawk gefur til kynna viðvörun um notkun þess ef - lítinn er tilgreindur á stjórn línunnar.

Hin eiginleiki er að nota annaðhvort að halda áfram eða brot yfirlýsingar utan líkamans um stund , fyrir , eða gera lykkju. Hefðbundnar AWK útfærslur hafa meðhöndlað slíkan notkun sem jafngildir næsta yfirlýsingu. Gawk styður þessa notkun ef --traditional hefur verið tilgreint.

GNU Eftirnafn

Gawk hefur fjölda viðbótar við POSIX awk . Þau eru lýst í þessum kafla. Allar viðbætur sem lýst er hér geta verið gerðir óvirkir með því að kalla á gawk með --traditional valkostinum.

Eftirfarandi aðgerðir gawk eru ekki tiltækar í POSIX awk .

*

Engin leiðsleit er gerð fyrir skrár sem heitir með -f valkostnum . Þess vegna er umhverfisbreytan AWKPATH ekki sérstök.

*

The \ x flýja röð. (Óvirk með --posix .)

*

Fflush () virknin. (Óvirk með --posix .)

*

Hæfni til að halda áfram eftir línum ? og :. (Óvirk með --posix .)

*

Octal og hexadecimal fastar í AWK forritum.

*

ARGIND , BINMODE , ERRNO , LINT , RT og TEXTDOMAIN breytur eru ekki sérstakar.

*

IGNORECASE breytu og aukaverkanir þess eru ekki tiltækar.

*

FIELDWIDTHS breytu og fastur breidd sviði skiptingu.

*

PROCINFO array er ekki í boði.

*

Notkun RS sem venjulegur tjáning.

*

Sérstök skráarnöfn sem eru tiltæk fyrir I / O umskiptingu eru ekki þekktar.

*

The | & rekstraraðili til að búa til samvinnu.

*

Hæfni til að skipta út einstökum stafum með því að nota null strenginn sem gildi FS og sem þriðja rök til að skipta () .

*

Valfrjálst önnur rök við loka () aðgerðina.

*

Valfrjálst þriðja rök fyrir leikinn () virka.

*

Hæfileiki til að nota staðbundnar specifiers með printf og sprintf () .

*

Notkun eyða array til að eyða öllu innihaldi fylki.

*

Notkun nextfile til að yfirgefa vinnslu núverandi innsláttarskrár.

*

Og () , asort () , bindtextdomain () , compl () , dcgettext () , gensub () , lshift () , mktime () , eða () , rshift () , strftime () , strtonum () og xor () virka.

*

Localizable strengir.

*

Bætir nýjum innbyggðum virkum virkum við eftirnafn () virka.

AWK bókin skilgreinir ekki afturvirði lokunarinnar () . Loka Gawk () skilar gildi frá fclose (3), eða pclose (3), þegar lokun framleiðsla skrá eða pípa, í sömu röð. Það skilar lokunarferli ferlisins þegar lokað er inntakspípa. Return gildi er -1 ef heitir skrá, pípa eða samvinnslu var ekki opnað með umskiptum.

Þegar gawk er beitt með --traditional valkostinum, ef fs rökin við -F valkostinn er `` t '', þá er FS stillt á flipa stafinn. Athugaðu að slá inn gawk -F \ t ... einfaldlega veldur því að skelurinn geti vitnað `` t, '' og sleppir ekki `` \ t '' við -F valkostinn. Þar sem þetta er frekar ljótt sérstakt tilfelli er það ekki sjálfgefið hegðun. Þessi hegðun kemur einnig fram ef --posix hefur verið tilgreint. Til að fá flipaákn eins og svæðisskiljari er best að nota eitt tilvitnun: gawk -F '\ t' ....

Sjá önnur skipanir : bíða , lp , ljúka , execv , fáfacl , ioctl , uniq , rmmod , pvcreate , rsh , unix2dos , cal , fs , cd , iwpriv , swapon , autofs , tala , modd , frjáls , lpr , execl , fdisk , á , hver , iwconfig , ifconfig , vgdisplay , opna , lsmod , ntohs , mailq , drepa , wtmp