Õpi Linuxi käsku - gawk

Nimi

gawk - mustri skaneerimine ja töötlemine keel

Kokkuvõte

gawk [POSIXi või GNU-stiilis valikud] -f programm-fail [ - ] fail ...
gawk [POSIXi või GNU-stiilis valikud] [ - ] programm-tekstifail ...

pgawk [POSIX või GNU stiilis valikud] -f program-file [ - ] fail ...
pgawk [POSIXi või GNU-stiilis valikud] [ - ] programm-tekstifail ...

Kirjeldus

Gawk on AWK-i programmeerimiskeelu GNU- projekti rakendamine. See vastab POSIX 1003.2 käskluse ja kommunaalteenuste standardi keele määratlusele. See versioon omakorda põhineb kirjeldusel AWK-i programmeerimiskeeles Aho, Kernighan ja Weinberger koos täiendavate funktsioonidega, mis on leitud UNIX awk System V versiooni 4. versioonist. Gawk pakub ka uuemaid Bell Laboratories awk laiendusi ja mitmeid GNU-spetsiifilisi laiendeid.

Pgawk on gawki profiilide versioon. See on igati gawkiga identne, välja arvatud see, et programmid töötavad aeglasemalt ja see loob faili awkprof.out automaatselt täitmise profiili. Vaata allpool olevat profiili -profiili .

Käsurea koosseisus on võimalused ennast avastada, AWK-programmi tekst (kui seda ei pakuta -f või -file valikute abil) ja väärtused, mis tehakse kättesaadavaks ARGC ja ARGV eelnevalt määratletud AWK muutujatega.

Variant Formaat

Gawki valikud võivad olla kas traditsioonilised POSIX ühe kirja valikud või GNU-stiilis pikad valikud. POSIXi valikud algavad ühe `` - '', pikad variandid algavad `` - ''. Nii GNU-spetsiifilisi funktsioone kui ka POSIX-i volitatud funktsioone pakuvad pikad võimalused.

POSIX-i standardi kohaselt antakse gawk- spetsiifilised valikud -W- valiku argumentide kaudu. Võimalik on esitada mitu- W võimalust Igal -W- valikul on vastav pikk valik, nagu on üksikasjalikult kirjeldatud allpool. Pikkade valikute argumendid on kas võimaluse korral liitunud = tähisega, millel ei ole vahepealseid tühikuid, või neid võib anda järgmises käsurea argumendis. Pikad variandid võivad olla lühendatud, kui lühend on ainulaadne.

Valikud

Gawk aktsepteerib järgmisi võimalusi, loetletakse tähestikulises järjekorras.

-F fs

--field-separator fs Kasuta sisendvälja eraldaja fs (eelmääratletud muutuja FS väärtus).

-v var = val

- assignment var = val Määra var väärtus väärtus val enne programmi käivitamist. Sellised muutuja väärtused on saadaval AWK-programmi BEGIN- blokaadis.

-f programmi fail

--faili programmifail Lugege AWK programmi allikat failiprogrammi failist , mitte esimesest käsurea argumendist. Võib kasutada mitut -f (või --file ) võimalusi.

-mf NNN

-mr NNN Määravad erinevad mälu piirid väärtusele NNN . F- tähis määrab maksimaalse arvu väljade ja r- märgi määrab maksimaalse rekordilise suuruse. Need kaks lippu ja -m variant pärinevad UNIX awk'i Bell Laboratories uurimisversioonist. Gawk ignoreerib neid, kuna gawkil ei ole eelnevalt määratletud piiranguid.

-W compat

-W traditsiooniline

- compat

- traditsiooniline Käivita ühilduvusrežiimis . Ühilduvusrežiimis käitub gawk identselt UNIX awk-ga ; ühtegi GNU-spetsiifilist laiendit ei tunnustata. Selle variandi teistes vormides eelistatakse traditsioonilist kasutamist. Lisateabe saamiseks vt allpool GNU EXTENSIONS .

-W copyleft

-W autoriõigus

--copyleft

--autoriõigused Trükite GNU autoriõiguse teabesõnumi lühitutvustust standardväljale ja edukalt väljumiseks.

-W-dump-muutujad [ = fail ]

--dump-muutujad [ = file ] Trükitakse globaalsete muutujate sorteeritud nimekiri, nende tüübid ja faili lõplikud väärtused. Kui faili ei pakuta, kasutab gawk praeguses kataloogis nimega awkvars.out .

Kõigi ülemaailmsete muutujate loend on hea viis oma programmide tüpograafiliste vigade leidmiseks. Seda võimalust kasutaksite ka siis, kui teil on suur programm, millel on palju funktsioone, ja soovite kindel olla, et teie funktsioonid ei kasuta tahtmatult globaalseid muutujaid, mida pidite olema kohalikud. (See on eriti lihtne viga teha lihtsate muutujatega nagu i , j jne.)

-Te abi

-W kasutamine

--Help

--usage Trüki suhteliselt lühike kokkuvõte standardväljundist saadaolevatest valikutest. ( GNU kodeerimisstandardite tõttu põhjustavad need võimalused viivitamatu ja eduka väljumise.)

-Wlint [ = surmav ]

--lint [ = surmav ] Esitage hoiatusi konstruktsioonide kohta, mis on teiste AWK rakenduste jaoks kahtlased või teisaldatavad. Valikuline argument surmaga lõppevate lint hoiatuste saamine surmavalt vigu. See võib olla drastiline, kuid selle kasutamine soodustab kindlasti puhtamate AWK-programmide väljatöötamist.

-Väike-vana

--lint-old Esitage hoiatusi konstruktsioonide kohta, mis ei ole Unix awk algne versiooniga kaasaskantavad.

-W gen-po

--gen-po . AWK-programmi skannimine ja analüüsimine ning genereerimine standardväljundina GNU .po- vormingus faili .po- vormingus, kus on kirjeid kõikide programmis paiknevate stringide kohta. Programmi ise ei ole täidetud. Lisateabe saamiseks vt. GNU gettext levitamist .po failide kohta.

-W teisese kümnendkohaga andmed

- mitte-kümnendkohaga andmed Tuvastage sisendandmete kaheksand ja kuueteistkümnendväärtused. Kasuta seda võimalust väga ettevaatlikult!

-W posix

--posix See lülitub ühilduvusrežiimile järgmiste lisapiirangutega:

*

\ x escape-järjestused ei ole tunnustatud.

*

Ainult ruumi ja vahekaarti tehakse väljade eraldajatena, kui FS on seatud ühele tühikule, uuele reale ei ole.

*

Te ei saa jooni pärast ? ja :

*

Märksõna funktsiooni sünonüüm funktsiooni ei tunnustata.

*

Operaatorid ** ja ** = ei saa kasutada asemel ^ ja ^ = .

*

Funktsioon fflush () ei ole saadaval.

-W profiil [ = prof_file ]

--profiil [ = prof_file ] Saada profileerimisandmed prof_file'ile . Vaikimisi on awkprof.out . Kui kasutate gawki , on profiil lihtsalt programmi "üsna trükitud" versioon. Kui kasutate pgawk-i , sisaldab profiil profiili iga avaldise täitmise loendit vasakpoolses servas ja funktsioonikõne loendusi iga kasutaja määratud funktsiooni jaoks.

-W-intervall

- inter-intervall Võimaldab kasutada intervalli väljendusi regulaaravaldiste sobitamisel (vt allpool toodud regulaaravaldised ). AWK-keeles ei olnud tavapäraselt intervallide väljendeid saadaval. POSIXi standard lisas neid, et awk ja egrep oleksid üksteisega kooskõlas. Siiski võib nende kasutamine tõenäoliselt katkestada vanad AWK-programmid, nii et gawk pakub neid ainult siis, kui neile seda võimalust taotletakse või kui --posix on täpsustatud.

-W-lähtekoodiga -tekst

--programmi -teksti allikas Programmi teksti kasutamine AWK-programmi lähtekoodi järgi. See valik võimaldab raamatukogu funktsioone (kasutatakse failide -f ja -file abil) koos käsureal sisestatud lähtekoodi abil. See on mõeldud peamiselt keskmise ja suure hulga AWK-programmide jaoks, mida kasutatakse shell skriptides.

-W versioon

--versioon Selle konkreetse koopia gawk prindiversiooni andmed standardväljundil. See on kasulik peamiselt teada, kas teie praeguse süsteemi gawk'i eksemplar on ajakohane, olenemata sellest, mida Free Software Foundation levitab. See on kasulik ka vigade teatamisel. ( GNU kodeerimisstandardite tõttu põhjustavad need võimalused viivitamatu ja eduka väljumise.)

- Signaali valikud lõpuks. See on kasulik, et lubada AWK-programmi jaoks täiendavaid argumente, et alustada "- -" -ga. See on peamiselt kooskõlas enamus teiste POSIX-i programmidega kasutatava argumentide parsimisega.

Ühilduvusrežiimis märgistatakse kõik muud valikud kehtetutena, kuid muidu ignoreeritakse. Tavalises töös, kui programmi tekst on esitatud, saadetakse tundmatud valikud töötlemiseks ARGV massiivile AWK-programmi. See on eriti kasulik AWK-programmide käivitamiseks käivitatava tõlgi mehhanismi kaudu `` #! ''.

AWK PROGRAMMI TÄITMINE

AWK-programm koosneb mustrite toimimisaruannete järjestusest ja valikulistest funktsioonide määratlustest.

muster { tegevusaruanne }

funktsiooni nimi ( parameetrite nimekiri ) { statements }

Gawk loeb programmi faili (-s) programmi allikast esimest korda, kui see on määratud, argumentidest - allikast või käsurealt esimestest valikvastustest . -f ja -allika valikuid saab käsurealt mitu korda kasutada. Gawk loeb programmi teksti nii, nagu oleksid kogu programm-fail s ja käsurea lähtetekstid kokku liidetud. See on kasulik AWK-funktsioonide raamatukogude ülesehitamiseks, ilma et peaksite neid iga uue AWK-programmiga, mis neid kasutab. Samuti pakub see võimalust kombineerida raamatukogu funktsioone käsurea programmidega.

Keskkonnamõõdik AWKPATH määrab otsingutee, mida kasutada lähtefailide leidmisel koos -f valikuga. Kui seda muutujat ei eksisteeri, on vaikemarsruut ".: / Usr / local / share / awk" . (Tegelik kataloog võib sõltuvalt sellest, kuidas gawk ehitati ja installiti, varieeruda.) Kui -f- ile antud failinimi sisaldab sümbolit `` / ', ei tehta ühtegi tee otsingut.

Gawk käivitab AWK-programmid järgmises järjekorras. Esiteks, kõik variandid, mis on määratud -v-vormingus, on täidetud. Järgmine gawk kompileerib programmi sisemise vormi. Seejärel käivitab gawk koodi BEGIN-i blokkides (kui neid on) ja seejärel jätkab lugemist iga ARGV massiivis nimetatud faili. Kui käsurida nimega pole ühtegi faili, loeb gawk standardse sisendiga.

Kui käsureal olev failinimi on vorm var = val, käsitletakse seda muutuja määramisena. Muutuja vari saab väärtus val . (See juhtub, kui kõik BEGIN-i plokid on käivitatud.) Käsurea muutuja määramine on kõige kasulikum muutujate väärtuste dünaamiliseks määramiseks, mida AWK kasutab, et kontrollida, kuidas sisend kattub väljadelt ja kirjetega. See on kasulik ka kontrollimiseks, kui ühest andmefailist on vaja mitu passi.

Kui konkreetse ARGV elemendi väärtus on tühi ( "" ), siis jätab gawk selle üle.

Sisestage iga kirje puhul gawk- test, et näha, kas see vastab mingile mustrile AWK-programmis. Iga režiimi puhul, mis vastab rekordile, käivitatakse sellega seotud toiming . Mudeleid testitakse programmis esinevas järjekorras.

Lõpuks, kui kõik sisend on ammendatud, käivitab gawk koodi END blokeeringu (te) s (kui on olemas).

Muutujad, kirjed ja väljad

AWK muutujad on dünaamilised; need tekivad, kui neid esmakordselt kasutatakse. Nende väärtused on kas ujukoma numbrid või stringid, või mõlemad, olenevalt sellest, kuidas neid kasutatakse. AWK-il on ka ühe mõõtmega massiivid; Mitme mõõtmega massiivid võivad olla simuleeritud. Programmi käivitamiseks on määratud mitu eelmääratletud muutujat; neid kirjeldatakse vastavalt vajadusele ja neid kirjeldatakse allpool.

Rekordid

Tavaliselt eraldatakse kirjed uue tähtedega. Saate kontrollida, kuidas dokumente eraldatakse, määrates väärtused sisseehitatud muutuja RS-le . Kui RS on üksikud tähemärgid, siis see märk eraldab kirjeid. Vastasel korral RS on regulaaravaldis. Teksti sisendis, mis vastab sellele regulaaravaldisele, eraldab rekord. Kuid ühilduvusrežiimis kasutatakse kirjete eraldamiseks ainult selle stringi väärtust. Kui RS on seatud nullstringile, siis salvestused eraldatakse tühikutega. Kui RS on nullstringile määratud, järgib alati uue rea tähis alati väljade eraldajat, lisaks mis tahes väärtusele FS võib olla.

Väljad

Nagu iga sisendkausta loetakse, jagab gawk rekord väljadesse , kasutades FS-i muutuja väärtust väljade eraldajaks. Kui FS on üks tähemärk, eraldavad need väljad selle tähemärgiga. Kui FS on nullstring, siis saab iga üksikmärk eraldi välja. Vastasel juhul eeldatakse, et FS on täielik regulaaravaldis. Erijuhul, kui FS on üks tühik, eraldavad väljad ruumide ja / või vahelehtede ja / või uute ribade jookseb. (Kuid vaata allpool). MÄRKUS . IGNORECASE väärtus (vt allpool) mõjutab ka seda, kuidas väljad jagatakse, kui FS on regulaaravaldis ja kuidas dokumente eraldatakse, kui RS on regulaaravaldis.

Kui FIELDWIDTHS-i muutuja on seatud tühikutega eraldatud arvude loendisse, siis eeldatakse, et igal väljal on fikseeritud laius, ja gawk jagab kirje kindlaksmääratud laiusega. FS väärtust ignoreeritakse. FS-i uue väärtuse määramine välistab FIELDWIDTHS-i kasutamise ja taastab vaikimisi käitumise.

Sisendkandidaalil võib viidata selle positsioonile, $ 1 , $ 2 ja nii edasi. $ 0 on kogu rekord. Konstandid ei pruugi viidata väljadelt:

n = 5
prindi $ n

prindib sisendkausta viies väli.

Muutuja NF määratakse sisendkandidaatide koguarvuks.

Viited mitteolematud väladele (st väljad pärast $ NF ) toovad null-stringi. Kuid mitteolematu välja (nt $ (NF + 2) = 5 ) määramine suurendab NF väärtust, loob mis tahes vahelduvaid välju null-stringiga nende väärtusena ja põhjustab 0- väärtuse ümberarvutamise koos väljad eraldatakse OFS väärtusega. Viited negatiivsetele nummerdatud väladele põhjustavad saatuslikku viga. Vähendamine NF-s põhjustab uute väärtuste kaotamise väljal olevate väljade väärtuste ja OFS-i väärtusest eraldatava väärtuse 0 $ ümberarvutamise.

Olemasolevale väärtusele väärtuse määramine põhjustab kogu rekordi taastamise, kui viidatakse $ 0-le . Samamoodi põhjustab väärtuse määramine $ 0-le rekordi uuesti, luues uute väljade väärtused.

Sisseehitatud muutujad

Gawki sisseehitatud muutujad on järgmised:

ARGC

Käsurea argumentide arv (ei sisalda gawki või programmi allika valikuid).

ARGIND

Praegune faili ARGV indeks, mida töödeldakse.

ARGV

Käsirida argumentide array. Massiiv indekseeritakse alates 0-st kuni ARGC -1-ni. ARGV sisu dünaamiline muutmine võib kontrollida andmete jaoks kasutatavaid faile.

BINMODE

Mitte-POSIX-süsteemides täpsustatakse kõigi failide I / O jaoks kasutatava `'binaarse' 'režiimi kasutamine. Numbrilised väärtused 1, 2 või 3 määravad, kas sisendfailid, väljundfailid või kõik failid peaksid vastavalt kasutama binaarset I / O-vormingut. Stringiväärtused "r" või "w" määravad, et sisendfailid või väljundfailid peaksid kasutama binaarset I / O-d. Stringiväärtused "rw" või "wr" määravad, et kõik failid peaksid kasutama binaarse sisend / väljundit. Muid stringiväärtusi käsitletakse kui "rw" , kuid tekitab hoiatusteate.

CONVFMT

Numbride teisendamisvorming, "% .6g" , vaikimisi.

ENVIRON

Massiiv, mis sisaldab praeguse keskkonna väärtusi. Array indekseeritakse keskkonna muutujate abil, kusjuures iga element on selle muutuja väärtus (nt ENVIRON ["HOME"] võib olla / home / arnold ). Selle massiivi muutmine ei mõjuta keskkonda, mida näevad programmid, mida gawk tekitab redirection või system () funktsiooni abil.

ERRNO

Kui tekib süsteemi viga, mis kas teevad suunanäidet getline jaoks , read read jaoks getline või suletud () ajal , siis ERRNO sisaldab stringi, mis kirjeldab viga. Väärtus on tingitud tõlkimisest mitte-inglise keeles.

VALGUSLIKUD

Valge ruumi eraldatud lahtrite nimekiri. Kui see seatud, gawk analüüsib sisendit fikseeritud laiusega väljadesse, selle asemel, et kasutada FS-i muutuja väärtust väljade eraldajaks.

FAILI NIMI

Praegune sisendfaili nimi. Kui käsurida ei ole faile määratud, on FILENAME väärtus `` - ''. Kuid FILENAME on määratlemata BEGIN- blokeeringu sees (kui seda ei tee getline ).

FNR

Sisendkande number praeguses sisendfailis.

FS

Sisendi väljade eraldaja, vaikimisi tühik. Vt väljad eespool.

IGNORECASE

Kontrollib kõigi regulaaravaldiste ja stringide toimingute tundlikkust. Kui IGNORECASE väärtus on nullväärtusega, siis stringide võrdlused ja mustrite võrdlemine reeglites, väljale FS-ga jagamine, RS-ga eraldamine, regulaaravaldise vastavus ~ ja ! ~ -ga ning gensub () , gsub () , indeks () , match () , split () ja sub () sisseehitatud funktsioonid ignoreerivad juhtumit, kui teed regulaaravaldise operatsioone. MÄRKUS. Array elemente ei mõjutata ega asort () funktsiooni.

Seega, kui IGNORECASE ei ole nulliga võrdne, siis / aB / vastab kõigile stringidele ab , aB , Ab ja AB . Nagu kõigi AWK muutujate puhul, on IGNORECASE algväärtus null, nii et kõik regulaaravaldised ja stringi toimingud on tavaliselt tõstutundlikud. Unixi puhul kasutatakse juhul, kui ignoreeritakse, täieliku ISO 8859-1 ladina-1 märkide komplekti.

LINT

Pakub dünaamilist juhtimist --lint valikust AWK programmi raames. Kui tõsi, gawk prindib lint hoiatusi. Kui see on vale, ei ole see nii. Kui määratud string väärtus "surmav" , lint hoiatused muutuvad surmav vigu, täpselt nagu - lint = surmav . Kõik muud tõelised väärtused prindivad hoiatusi.

NF

Praeguse sisendkandja väljade arv.

NR

Seni registreeritud sisendandmete koguarv.

OFMT

Numbrite väljundvorming, "% .6g" , vaikimisi.

OFS

Väljaväljade eraldaja, vaikimisi tühik.

ORS

Väljundikirje eraldaja on vaikimisi uus rida.

PROCINFO

Selle massiivi elemendid pakuvad juurdepääsu aktiivse AWK-programmi kohta käivale teabele. Mõnel süsteemil võivad massiivides esineda elemendid, "group1" läbi rühma n mõne n jaoks , mis on protsessis olevate täiendavate rühmade arv. Kasutage operaatoril nende elementide testimiseks. Tagatud on järgmised elemendid:

PROCINFO ["egid"]

getegid (2) süsteemi kõne väärtus.

PROCINFO ["euid"]

geteuid (2) süsteemi kõne väärtus.

PROCINFO ["FS"]

"FS", kui väljale FS-ga jagamine on kehtiv, või FIELDWIDTHS-il põhinev väli "FIELDWIDTHS" .

PROCINFO ["gid"]

getgid (2) süsteemi kõne väärtus.

PROCINFO ["pgrpid"]

praeguse protsessi protsesside grupi ID.

PROCINFO ["pid"]

praeguse protsessi protsessi ID.

PROCINFO ["ppid"]

praeguse protsessi vanemprotsessi ID.

PROCINFO ["uid"]

getuid (2) süsteemi kõne väärtus.

RS

Sisendraamide eraldaja on vaikimisi uus rida.

RT

Rekordi terminaator. Gawk seab sisendteksti RT-le, mis vastab tööparameetri märki või regulaaravaldisele.

RSTART

Esimene tähemärgi indeks, mis vastab match () ; 0 kui ei sobi. (See tähendab, et märksõnade indeksid algavad ühes.)

RLENGTH

Match () vastendatud stringi pikkus; -1 kui ei sobi.

SUBSEP

Märksõnatüüp, mida kasutatakse massiivi elementide mitmete indikaatorite eraldamiseks vaikimisi "\ 034" .

TEXTDOMAIN

AWK-programmi tekstdomeen; kasutatakse lokaliseeritud tõlke leidmiseks programmi stringide jaoks.

Massiraadid

Massiivid on indekseeritud väljendiga nurksulgudes ( [ ja ] ). Kui väljend on väljendi nimekiri ( expr , expr ...), siis on massiivi alamkanter string, mis koosneb iga väljendi (stringi) kokkulangemisest, eraldatud SUBSEP-i muutuja väärtusega. Seda võimalust kasutatakse mitmete mõõtmetega massiivide simuleerimiseks. Näiteks:

i = "A"; j = "B"; k = "C"
x [i, j, k] = "tere, maailm \ n"

määrab stringi "tere, maailm \ n" elemendi array x, mis on indekseeritud string "A \ 034B \ 034C" . Kõik AWK-i massiivid on assotsiatiivsed, st indekseeritud stringväärtustega.

Erilise operaatorit võidakse kasutada mõne või teise avalduse korral, et näha, kas massiivil on indeks, mis koosneb kindlast väärtusest.

kui (massiivi val) trükimassiiv [val]

Kui massiivil on mitu alaindet, kasutage massiivis (i, j) .

Konstrukti saab kasutada ka silmusena, et see oleks võimalik kogu massiivi elementidega läbi lugeda.

Element võidakse massiivist kustutada, kasutades kustutamise avaldust. Kustutamisaruande võib kasutada ka massiivi kogu sisu kustutamiseks, täpsustades masriivi nime ilma alajästeta.

Muutuja trükkimine ja teisendamine

Muutujad ja väljad võivad olla (ujukoma) numbrid või stringid või mõlemad. Muutuja väärtuse tõlgendamine sõltub selle kontekstist. Kui seda kasutatakse numbrilises väljundis, käsitletakse seda numbrina, kui seda kasutatakse stringina, käsitletakse seda stringina.

Selleks, et muuta muutuja nn arvuks, lisage sellele 0; et sundida seda käsitlema stringina, ühendada see nullstringiga.

Kui string tuleb arvutada, toimub konversioon kasutades strtod (3). Arv muudetakse stringiks, kasutades võtit CONVFMT väärtuseks sprintf- vormingus stringina (3), kusjuures muutuja arvuline väärtus on argument. Kuigi kõik AWK-i numbrid on ujukinnisus, integreeritakse väärtused alati täisarvudena. Nii antud

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

muutuja b stringi väärtus on "12", mitte "12.00" .

Gawk sooritab võrdlusi järgmiselt: kui kaks muutujat on numbrilised, võrreldakse neid numbriliselt. Kui üks väärtus on numbriline ja teine ​​on stringi väärtus, mis on "numbriline string", siis võrreldakse ka numbriliselt. Vastasel juhul teisendatakse numbriline väärtus stringi ja tehakse stringivõrrand. Loomulikult võrreldakse kahte stringi stringidega. Pange tähele, et POSIXi standard rakendab mõnda `` numbrilist stringi '' mõistet kõikjal, isegi stringkonstantide jaoks. Kuid see on ilmselgelt vale ja gawk seda ei tee. (Õnneks on see standardi järgmine versioon fikseeritud.)

Pange tähele, et stringkonstandid, näiteks "57" , ei ole numbrilised stringid, need on stringivälised konstandid. 'Numbrilise stringi' mõte kehtib ainult väljad, getline sisend, FILENAME , ARGV elemendid, ENVIRON elemendid ja massiivi elemendid, mis on loodud numbriliste stringidega split () . Põhiideeks on see, et kasutaja sisend ja ainult kasutaja sisend, mis näeb välja arvuliselt, tuleks selliselt töödelda.

Uninitialiseeritud muutujatel on numbriline väärtus 0 ja string väärtus "" (null või tühi string).

Veerand ja heksadetsimaalsed konstandid

Alustades versioonist 3.1 gawkist, võite oma AWK-programmi lähtekoodi abil kasutada C-stiilis kaheksand- ja kuueteistkümnendaid konstante. Näiteks on kaheksandarvu 011 võrdne kümnendkohaga 9 ja kuueteistkümnendväärtus 0x11 võrdub kümnendkohaga.

Stringkonstandid

AWK-i stringivälised konstandid on topeltjutumuste vahele jäetud märkide järjestused ( " ). Stringide sees tuvastatakse teatud evakueerimisjärjestused nagu C-s. Need on:

\\

Sõnasõnaline tagasilöök.

\ a

`` Hoiatusmärk ''; tavaliselt ASCII BEL tähemärk.

\ b

backspace.

\ f

vormivooga.

\ n

uus rida.

\ r

käru tagasitulek.

\ t

horisontaalne sakk.

\ v

vertikaalne vahekaart.

\ x kuusnurkset numbrit

Täht kujutab endast xxadecimiliinide arvu järjestust. Nagu ANSIC-is, loetakse kõik järgnevad kuueteistkümnendkohad põikjärjestuse osaks. (See funktsioon peaks meile rääkima komisjoni keele disainist.) Näiteks, "\ x1B" on ASCIIESC (põgeneda) tähemärk.

\ ddd

Täht, mida tähistab kaheksandate numbrite 1-, 2- või 3-kohaline järjestus. Näiteks "\ 033" on ASCII ESC (põgeneda) tähemärk.

\ c

Tähtmärk c .

Escape-järjestusi saab kasutada ka püsivate regulaaravaldkondade sees (nt / [\ t \ f \ n \ r \ v] / sobib tühikutega tähemärke).

Ühilduvusrežiimis täidavad oktaan- ja kuueteistkümnendate evakueerimisjärjestustega tähiseid tähed sõna otseses mõttes, kui neid kasutatakse regulaaravaldiskonstantides. Seega / a \ 52b / on samaväärne / a \ * b / .

Mustrid ja tegevused

AWK on line orienteeritud keel. See muster tuleb kõigepealt ja seejärel toiming. Tegevusavaldused on lisatud { ja } . Mõlemad mustrid võivad puududa või toiming puududa, kuid muidugi mitte mõlemad. Kui muster puudub, toimub toiming iga sisendkoguse kohta. Puuduv tegevus on samaväärne

{print}

mis prindib kogu rekordi.

Kommentaarid algavad sümboliga `` # '' ja jätkatakse rea lõpuni. Väljaannete eraldamiseks võib kasutada tühikuid. Tavaliselt lõpeb avaldus uue reaga, aga see ei kehti nende ridade puhul, mis lõpevad tähtedega ``, '', { , ? , : , && või || . Lõppjooned teevad või ka nende avaldused jätkuvad automaatselt järgmisel real. Muudel juhtudel võib rida jätkata, kui lõpetatakse see ", mille puhul uus rida ignoreeritakse.

Mitu avaldust võib panna ühele reale, eraldades need koos ``; ''. See kehtib mõlema mustriga tegutsemise paari (tavaline juhtum) toimingu osa kohta ja mustrite toimimise avaldustega endast.

Mustrid

AWK mustrid võivad olla üks järgmistest:

BEGIN END / regulaaravaldis / relatsiooniline ekspressiooni muster & & muster muster || mustri muster ? muster : muster ( muster ) ! mustri muster1 , muster2

BEGIN ja END on kaks eri tüüpi mustrit, mida ei kontrollita sisendi suhtes. Kõigi BEGIN- mustrite tegevuste osad ühendatakse nii, nagu oleksid kõik avaldused kirjutatud ühes BEGIN- blokaadis. Need käivitatakse enne mis tahes sisendite lugemist. Samamoodi ühendatakse kõik END plokid ja need käivitatakse, kui kogu sisend on ammendatud (või kui väljumise avaldus on täidetud). BEGIN ja END mustreid ei saa kombineerida teiste muster väljendeid. BEGIN ja END mustrid ei pruugi sisaldada puuduvaid tegevussuundi.

/ Regulaaravaldise / mustrite korral täidetakse sellega seotud avaldus iga regulaaravaldisega sisestatava kirje jaoks. Regulaaravaldised on samad, mis egrepis (1), ja on kokku võetud allpool.

Relatsioonväljend võib kasutada mõnda tegevust käsitlevas jaotises allpool määratletud operaatorit. Tavaliselt kontrollitakse, kas teatud väljad vastavad teatud regulaaravaldistele.

&& , || ja ! operaatorid on loogilised AND, loogilised OR ja loogiliselt NOT vastavalt C-le. Nad hindavad lühisühendust, nagu ka C-s, ja neid kasutatakse rohkem primitiivsete mustrite väljendite ühendamiseks. Nagu enamikus keeltes, võib hindamisjärjekorra muutmiseks kasutada ka sulgudes.

Opera ?: On sama operaator C-s. Kui esimene muster on tõene, on testimiseks kasutatav mustrid teine ​​mustriga, vastasel juhul on see kolmas. Hinnatakse ainult ühte teist ja kolmandat mustrit.

Väljundi mustriga1, mustriga2 nimetatakse vahemiku mustrit . See vastab kõikidele sisendandmetele, alustades rekordist, mis vastab mustrile1 , ja jätkatakse kuni rekordini, mis vastab mustriga 2 (kaasa arvatud). See ei ühildu mingi muu mustriga.

Regulaaravaldised

Regulaaravaldised on egrepis leitud laiendatud elemendid . Need koosnevad tähemärkidest järgmiselt:

c

vastab mitte-metasärk c .

\ c

vastab grammatilisusele c .

.

vastab mis tahes tähemärgile, sealhulgas uuele reale.

^

vastab stringi algusele.

$

vastab stringi lõppu.

[ abc ... ]

tähemärkide nimekiri vastab ühelegi tähemärki abc ...

[^ abc ... ]

tühistatud märkiloendid, vastab mis tahes tähemärgile peale abc ...

r1 | r2

vaheldumine: vastab kas r1 või r2 .

r1r2

liitmine: vastab r1 ja seejärel r2 .

r +

vastab ühele või mitmele r-le .

r *

vastab nullile või rohkem r-le .

r ?

vastab nullile või ühele r-le .

( r )

rühmitamine: vastab r .

r { n }

r { n ,}

r { n , m } Üks või kaks arvutussidesse tähistatud numbrit tähendavad intervalli avaldist . Kui traksidega on üks number, korratakse eelmist regulaaravaldist r n korda. Kui komaga on eraldatud kaks numbrit, siis r kordatakse n kuni m korda. Kui on üks number, millele järgneb koma, siis r korda vähemalt n korda.

Intervallid on saadaval ainult siis, kui käsureal on määratud kas --posix või --re-intervall .

\ y

vastab tühjale stringile kas sõna alguses või lõpus.

\ B

vastab sõna tühjale stringile.

\ <

sobib tühja stringiga sõna alguses.

\>

vastab sõna lõpus olevale tühjale stringile.

\ w

sobib iga sõna koostisosaga (täht, number või alakriips).

\ W

vastab mis tahes tähemärgile, mis ei ole sõna koostisosa.

\ `

sobib tühja stringiga puhvri (stringi) alguses.

\ '

vastab tühja stringi puhvri lõpus.

Ribakonstantides kehtivad evakuatsioonijärjestused (vt allpool) kehtivad ka regulaaravaldkondades.

Märgiklassid on POSIX-standardis kasutusele võetud uus funktsioon. Tähemärkide klass on spetsiaalne märge konkreetsete atribuutide tähtede loendite kirjeldamiseks, kuid kus tegelikud tähemärgid võivad riigiti erineda ja / või tähemärkidest, mis on märgistikku. Näiteks Ameerika Ühendriikides ja Prantsusmaal on tähemärkide tähendus erinev.

Tähemärgiklass kehtib ainult tähemärkide nimekirja sulgudes olevas regulaaravaldises. Tähemärkide klassid koosnevad [: klassist tähistavatest märksõnadest ja :] . POSIX-i standardis määratletud iseloomulikud klassid on järgmised:

[: alnum:]

Tähtnumbrilised tähemärgid.

[: alfa:]

Tähestiku tähemärgid

[: tühi:]

Ruumi või tabeldusmärgid.

[: cntrl:]

Juhtimismärgid

[: arv:]

Numbrilised tähemärgid.

[: graafik:]

Tähemärgid, mis on nii printimatavad kui ka nähtavad. (Tühik on printimiseks, kuid see pole nähtav, kuid a on mõlemad.)

[: madalam:]

Alumiste tähestikulised tähemärgid.

[: print:]

Trükitavad tähemärgid (tähemärgid, mis ei ole juhtsignaalid).

[: punct:]

Kirjavahemärgid (tähemärke, mis ei ole täht, numbrid, kontrollmärgid või tühikukirjamärke).

[: tühik:]

Kosmosemärgid (näiteks tühik, sakk ja vormivoog, mõnede nimede nimetamiseks).

[: ülemine:]

Ülaosaga tähestiku tähemärgid.

[: xdigit:]

Tähemärgid, mis on kuueteistkümnendnumbrid.

Näiteks enne POSIX-i standardi, et need vastaksid tähtnumbrilistele tähemärkidele, oleks pidanud kirjutama / [A-Za-z0-9] / . Kui teie märkide komplekt sisaldas teises tähestikus tähemärke, ei oleks see nendega kooskõlas ja kui teie märkide komplekt on jaotatud erinevalt ASCII-st, ei pruugi see isegi sobida ASCII-tähtnumbriliste tähtedega. POSIXi iseloomulike klassidega saate kirjutada / [[: alnum:]] / ja see vastab tärnide komplektide tähestikulistele ja numbrilistele tähemärkidele.

Märksõnaloendites võib ilmuda kaks täiendavat erijenust. Need kehtivad mitte-ASCII-koodide komplektide puhul, millel võib olla üksikuid sümboleid (nn koondamise elemendid ), mis on esindatud rohkem kui ühe tähemärgiga, samuti mitut tähemärki, mis on samaväärsed võrdlemiseks või sorteerimiseks. (Näiteks prantsuse keeles, tavaline `` e '' ja sügavärviline e` on samaväärsed)

Sümbolite värvimine

Kokkuvõtte sümbol on mitme sümboliga võrdlev element, mis on lisatud [. ja .] . Näiteks kui ch on võrdleva elemendiga, siis on [[.ch.]] Regulaaravaldis, mis vastab sellele võrdlevale elemendile, samas kui [ch] on regulaaravaldis, mis vastab kas c või h-le .

Samaväärsusklassid

Samaväärsusklass on samaväärsete tähtede loendi jaoks lokaalse täpsusega nimi. Nimi on lisatud [= and =] . Näiteks võib nime e kasutada kõigi `` e, '' `e, '' ja` `e`" tähistamiseks. "Sellisel juhul on [[= e =]] regulaaravaldis sobib mis tahes e , e ' või e`-ga .

Need funktsioonid on väga väärtuslikud mitte-inglise keelt kõnelevates piirkondades. Raamatukogus on funktsioonid, mida gawk kasutab regulaaravaldise jaoks, mis praegu tunnustavad POSIXi iseloomulikke klasse; nad ei tunnusta võrdlemise sümboleid või samaväärsusklassid.

\ Y , \ B , \ < , \> , \ w , \ W , \ ` ja \ ' operaatorid on gawkile spetsiifilised; need on laiendused, mis põhinevad GNU regulaaravaldiste raamatukogudes asuvatele rajatistele.

Erinevad käsurea valikud määravad, kuidas gawk tõlgendab tähemärke regulaaravaldis.

Valikud pole

Vaikimisi pakub gawk kõiki POSIXi regulaaravaldiste ja eespool kirjeldatud GNU regulaaravaldise operaatorite võimalusi. Intervallimääratlusi ei toetata.

--positsioon

Toetatakse ainult POSIXi regulaaravaldisi, GNU operaatorid pole erilised. (Näiteks \ w vastab sõnastikule w ). Intervallid on lubatud.

- traditsiooniline

Traditsioonilised Unix awk regulaaravaldised on sobitatud. GNU operaatorid ei ole erilised, intervalliigandid pole saadaval, samuti ei ole POSIXi iseloomulikud klassid ( [[: alnum:]] ja nii edasi). Oktoomilise ja kuueteistkümnendsüsteemse evakuatsioonijärjestusega kirjeldatud tähemärke käsitletakse sõna otseses mõttes, isegi kui need esindavad regulaaravaldise metasõnastikke.

--re intervall

Luba intervalli avaldised regulaaravaldistes, isegi kui - on olemas tavaline .

Toimingud

Tegevusavaldused on lisatud traksidega { ja } . Tegevusavaldused koosnevad enamikesse keeltesse leitavatest tavapärasest loovutamisest, tingimuslikest ja loopingutest. Kättesaadavad operaatorid, juhtimisaruanded ja sisend-väljund avaldused esitatakse pärast nende esitamist C.

Ettevõtjad

AWKi operaatorid on järjekorras väheneva tähtsuse järjekorras

( ... )

Rühmitamine

$

Väli viide.

++ -

Suurendamine ja vähendamine, nii eesliide kui ka postfix.

^

Ekspositsioon ( ** võib kasutada ka, ja ** = loovutamise operaatoril).

+ -!

Unary plus, unary minus ja loogiline eitamine.

* /%

Korrutamine, jagunemine ja moodul.

+ -

Lisamine ja lahutamine.

ruumi

String konkatenatsioon.

<>

<=> =

! = == Regulaarsed suhtelised operaatorid.

~! ~

Regulaaravaldise vaste, negatiivne vaste. MÄRKUS. Ärge kasutage ~ või ! ~ Vasakul küljel pidevat regulaaravaldist ( / foo / ). Kasutage seda ainult paremal pool. Väljend / foo / ~ exp on sama tähendusega kui (($ 0 ~ / foo /) ~ exp ) . See ei ole tavaliselt mõeldud.

sisse

Array liikmelisus.

&&

Loogiline JA.

||

Loogiline VÕI

?:

C-tingimuste väljend. See on kujul expr1 ? expr2 : expr3 . Kui expr1 on tõene, on väljendi väärtus expr2 , muidu on see expr3 . Hinnatakse ainult ühte expr2 ja expr3 .

= + = - =

* = / =% = ^ = Ülekanne. Toetatakse nii absoluutset määramist ( var = väärtus ) kui ka operaatori määramist (teisi vorme).

Kontrolliaruanded

Kontrolliaruanded on järgmised:

kui ( tingimus ) avaldus [ else statement ] samas ( tingimus ) avaldus teha avaldus, kui ( expr1 ; expr2 ; expr3 ) avaldus on ( expr1 ; expr3 ) avalduse jaoks ( var in array ) avalduse katkestamine jätkake kustutama array [ index ] kustutama array exit [ expression ] { avaldused }

I / O avaldused

Sisend / väljund avaldused on järgmised:

sulgege ( fail [ , kuidas ] )

Sulge fail, toru või kaasprotsess. Lisavõimalust tuleks kasutada ainult kahesuunalise toru ühe otsa sulgemisel koostööprotsessile. See peab olema string väärtus, kas "kuni" või "alates" .

getline

Määrake $ 0 järgmisest sisestustarkvarast; seatud NF , NR , FNR .

getline < file

Määrake $ 0 järgmisest toimikust ; seadistage NF .

getline var

Seadista var järgmisest sisestusvestest; määrake NR , FNR .

getline var < file

Seadista var järgmisest faili salvestusest.

käsk | getline [ var ]

Käivitage käsu torujuhtmed väljundisse kas $ 0 või var , nagu eespool.

käsk | & getline [ var ]

Käivitage käsk nagu kaasprotsessi torustik väljund kas $ 0 või var , nagu eespool. Kaasprotsessid on gawk pikendamine.

järgmine

Lõpeta praeguse sisendkausta töötlemine. Järgmine sisestusraamat loetakse ja töötlemine algab AWK-programmi esimese mustriga. Kui sisendandmete lõpp on saavutatud, täidetakse END plokk (id), kui need on olemas.

järgminefail

Lõpetage praeguse sisendfaili töötlemine. Järgmine sisendfaili lugemine pärineb järgmisest sisendfailist. FILENAME ja ARGIND värskendatakse, FNR lähtestatakse 1-ni ja töötlemine algab AWK-programmi esimese mustriga. Kui sisendandmete lõpp on saavutatud, täidetakse END plokk (id), kui need on olemas.

printige

Prindib praeguse rekordi. Väljundi salvestus lõpetatakse ORS-i muutuja väärtusega.

prindi ex-list

Prindib väljendeid. Iga väljend on eraldatud OFS-i muutuja väärtusega. Väljundi salvestus lõpetatakse ORS-i muutuja väärtusega.

prindi expr-list > fail

Prindib failis olevad väljendeid. Iga väljend on eraldatud OFS-i muutuja väärtusega. Väljundi salvestus lõpetatakse ORS-i muutuja väärtusega.

printf fmt, expr-list

Vormindage ja printige.

printf fmt, expr-list > fail

Vormindage ja printige failis .

süsteem ( cmd-line )

Käivitage käsu cmd-line ja tagasisaatmise olek. (See ei pruugi olla saadaval mitte-POSIX-i süsteemides.)

fflush ( [ fail ] )

Loputage kõiki avatud väljundfaili või torufailiga seotud puhvreid. Kui fail puudub, siis standardväljundi tühjendamine. Kui fail on null string, siis kõik avatud väljundfailid ja torud puhastavad puhvreid.

Trüki ja printf-i jaoks on lubatud täiendavad väljundredaktorid.

prindi ... >> fail

lisab failile väljundi.

prindi ... | käsk

kirjutab torule.

prindi ... | & käsk

saadab andmed koostööprotsessile.

Käsu getline tagastab faili lõpus 0 ja vea juures -1. Vea korral sisaldab ERRNO probleemi kirjeldavat stringi.

MÄRKUS. Kui kasutate pipe või co-process to getline või printida või printf loopis, peate käskude uute loomiseks kasutama close () . AWK ei sulge automaatselt torusid ega kaasprotsesse, kui nad tagastavad EOF-i.

Printf avaldus

Printf avalduse ja sprintf () funktsioonide AWK versioonid (vt allpool) nõustuvad järgmiste konversioonide spetsifikatsioonide vormingutega:

% c

ASCII sümbol. Kui % c jaoks kasutatav argument on numbriline, käsitletakse seda tähemärgina ja trükitakse. Vastasel juhul eeldatakse, et argument on string, ja trükitakse selle stringi ainus esimene täht.

% d , % i

Kümnumber (täisarv).

% e,% E

Vormi [-] d.dddddde [+ -] dd ujukoma number. % E- vormingus kasutatakse e- asemel e-d .

% f

Vormi [-] ddd.dddddd ujukoma number.

% g,% G

Kasutage % e või % f muundamist, olenevalt sellest, kumb on lühem, ja ebaoluliste nullidega mahasurutud. % G- vormingus kasutatakse % E asemel % E.

% o

Signeerimata kaheksandnumber (ka täisarv).

% u Signeerimata kümnendnumber (jällegi täisarv).

% s

Tähemärgi string.

% x,% X

Allkirjastamata kuueteistkümnendsumma (täisarv). % X- vormingus kasutab abcdefi asemel ABCDEF .

%%

Ühe % sümbol; ükski argument ei ole teisendatud.

Vabatahtlik võib lisaparameetri vahel olla % ja kontrollkiri:

loota $

Selles punktis vormindamisel kasutage loenduse argumenti. Seda nimetatakse positsiooni spetsifikatsiooniks ja see on mõeldud peamiselt kasutamiseks vormingu stringide tõlgitud versioonides, mitte AWK-programmi esialgses tekstis. See on gawk pikendus.

-

Väljend peab olema vasakpoolne õigustatud oma valdkonnas.

ruumi

Arvupõhisteks konversioonideks on eesliide positiivsete väärtustega tühikuga ja miinusmärgiga negatiivsed väärtused.

+

Plussmärk, mida kasutatakse enne laienduse modifitseerijat (vt allpool), ütleb, et alati esitab märgi numbrilistele konversioonidele, isegi kui vormindatud andmed on positiivsed. + Tühistab ruumi modifikaatori.

#

Kasutage mõne kontroll-tähe jaoks alternatiivset vormi. % O jaoks pakuvad nullit. % X ja % X korral annavad 0x või 0X nullmääraga tulemuse. % E , % E ja % f korral sisaldab tulemus alati kümnendkohta. % G ja % G jaoks ei lahkuvad tulemuse tagurpidi nullid.

0

Juhtiv 0 (null) toimib lipuriigina, mis näitab, et väljundit tuleks tühikute asemel tühjendada nullidega. See kehtib isegi numbrite väljundvormingute kohta. See lipp mõjutab ainult siis, kui väljade laius on trükitavast väärtusest laiem.

laius

Väljas peaks olema selline laius. Põllul on tavaliselt ruumid. Kui 0- lipp on kasutatud, on see nullidega varustatud.

. täpselt

Arv, mis täpsustab printimisel kasutatavat täpsust. % E , % E ja % f vormingute puhul määrab see numbrite arvu, mida soovite komakoha paremal pool printida. % G ja % G- vormingus määrab kindlaks oluliste numbrite maksimaalse arvu. % D , % o , % i , % u , % x ja % X vormingute puhul täpsustatakse prinditavate numbrite miinimumarv. % S määrab trükitava stringi tähemärgi maksimaalse arvu.

ANSI C printf () rutiinide dünaamiline laius ja täpsed omadused on toetatud. Kas laiuse või täpsete spetsifikatsioonide asemel A * muudab nende väärtused argumentide nimekirjast printf või sprintf () . Positsioonide spetsifikatsiooni kasutamiseks dünaamilise laiusega või täpsusega esitage arv $ pärast vormingus stringi * . Näiteks: "% 3 $ * 2 $. * 1 $ s" .

Failide nimed

Kui teed I / O ümbersuunamise kas failist printimis- või printf- faili või faili getline kaudu, tuvastab gawk teatud spetsiifilisi failinimesid sisemiselt. Need failinimed võimaldavad juurdepääsu gawk'i vanemprotsessile (tavaliselt shellile) pärinevatele avatud failidekirjeldajatele . Neid failinimesid saab ka andmefailide nimetamisel kasutada käsureal. Failinimed on järgmised:

/ dev / stdin

Standardne sisend.

/ dev / stdout

Standardväljund.

/ dev / stderr

Standardviga väljund.

/ dev / fd / n

Avatud failidekirjeldusega seotud fail n .

Need on eriti kasulikud veateadete korral. Näiteks:

prindi "Sa purjusid selle!" > "/ dev / stderr"

muidu peaksite kasutama

prindi "Sa purjusid selle!" | "kass 1 & 2"

TCP / IP võrguühenduste loomiseks võib kasutada && co-process operaatoriga järgmisi spetsiaalseid failinimesid.

/ inet / tcp / lport / rhost / rport

TCP / IP- ühenduse fail kohaliku pordi porti serveri serveri rhost serveripordis . Kasutage porti 0, et süsteem saaks porti valida.

/ inet / udp / lport / rhost / rport

Sarnane, kuid kasutage TCP / IP asemel UDP / IP- d.

/ inet / raw / lport / rhost / rport

Reserveeritud kasutamiseks tulevikus.

Muud spetsiaalsed failinimed võimaldavad juurdepääsu käimasoleva gawk- protsessi kohta käivatele andmetele. Nimetatud failinimed on nüüd vananenud. Kasutage PROCINFO massiivi, et saada neile pakutavat teavet. Failinimed on järgmised:

/ dev / pid

Selle faili lugemine tagastab protsessi ID praeguse protsessi kümnendkohale, lõpetatakse uue reaga.

/ dev / ppid

Selle faili lugemine tagastab praeguse protsessi algprotsessi ID kümnendkohale, lõpetatakse uue reaga.

/ dev / pgrpid

Selle faili lugemine tagastab praeguse protsessi protsesside grupi ID kümnendkohale, lõpetatakse uue reaga.

/ dev / kasutaja

Selle faili lugemine tagastab ühe rea, mis lõpeb uue reaga. Põllud on eraldatud tühikutega. $ 1 on getuid (2) süsteemikõne väärtus, $ 2 on geteuid (2) süsteemikõne väärtus, $ 3 on getgid (2) süsteemi kõne väärtus ja $ 4 on getegid (2) väärtus, süsteemi kõne. Kui lisaväljad on olemas, on need gruppideated, mida tagavad group getgroups (2). Mitu rühma ei pruugi kõigis süsteemides toetada.

Numbrilised funktsioonid

AWK-il on järgmised sisseehitatud aritmeetikafunktsioonid:

atan2 ( y , x )

Tagastab y / x arctangent radiaanides.

cos ( expr )

Tagastab eksissiini , mis on radiaanides, kooseinus.

exp ( expr )

Eksponentsiaalne funktsioon.

int ( expr )

Kärpides täisarvuni.

log ( expr )

Naturaallogaritmi funktsioon.

rand ()

Tagastab juhusliku numbri vahemikus 0 ja 1.

patt ( expr )

Tagastab expr-i sinise, mis on radiaanides.

sqrt ( expr )

Ruutjuurefunktsioon.

srand ( [ expr ] )

Kasutab expr kui juhuslike arvude generaatori uus seeme. Kui expr ei esitata, kasutatakse kellaaega. Tagastatav väärtus on juhusliku arvu generaatori eelmine seeme.

Stringfunktsioonid

Gawkil on järgmised sisseehitatud stringifunktsioonid :

asort ( s [ , d ] )

Tagastab lähteartikli s elementide arvu. S sisu sorteeritakse, kasutades väärtuste võrdlemiseks gawki tavareegleid, ja sorditud väärtuste indeksid asendatakse järjestikuste täisarvudega, mis algavad 1. Kui on määratud valikuline sihtmärkide array d , siis s kõigepealt dubleeritakse d- sse , ja seejärel d sorteeritakse, jättes lähteandmebaasi indeksid muutmata.

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

Otsige regulaaravaldise r tulemustele vastavat sihtmärki t . Kui h on string, mis algab g-st või G-st , siis asendage kõik vasted r- ga s-ga . Vastasel korral on h number, mis näitab, milline r -asendus asendada. Kui t pole tarnitud, kasutatakse selle asemel $ 0 . Asendustoote s korral võib järjekorda \ n , kus n on number 1 kuni 9, ainult n-st sisestatud alamekspressi sobitava teksti näitamiseks. Jada \ 0 kujutab endast kogu sobivat teksti, nagu ka märk & . Erinevalt sub () ja gsub () funktsiooni tulemusena tagastatakse muudetud string ja algse sihtrida ei muudeta.

gsub ( r , s [ , t ] )

Iga alamstringi vastavuse korral stringi t puhul asendatakse string s ja tagastab asenduste arvu. Kui t pole saadaval, kasutage $ 0 . Asendustekst asendatakse tekstiga, mis oli tegelikult sobitatud. Kasutage \ & et saada sõnasõnaline & . (Seda tuleb kirjutada kui "\\ &" ; vt allpool () , gsub () ja gensub () pakutud asendusteksti reeglite täielikku arutamist GWK: tõhus AWK-i programmeerimine .

indeks ( s , t )

Tagastab stringi t stringi s või 0, kui t puudub. (See tähendab, et märksõnade indeksid algavad ühes.)

pikkus ( [ s ] )

Tagastab stringi s pikkuse või $ 0 pikkuse, kui s pole saadaval.

vaste ( s , r [ , a ] )

Tagastab positsiooni s, kui ilmub regulaaravaldis r , või 0, kui r puudub, ja määrab RSTART ja RLENGTH väärtused. Pidage meeles, et argumentide järjekord on sama mis ~ operaatoril: str ~ re . Kui pakutakse massiivi a , tühjendatakse a ja seejärel elemendid 1 kuni n täidetakse s- osadega, mis vastavad vastavale ümarsulgatud alamväljendile r-s . A-i elementaarne element sisaldab osa, mis vastab kogu regulaaravaldisele r .

split ( s , a [ , r ] )

Jagab stringi s regulaarselt väljendatud r massiivi a ja tagastab väljade arvu. Kui r on ära jäetud, kasutatakse selle asemel FS- d. Massiiv a kustutatakse kõigepealt. Jaotamine käitub identselt väljalõikumiseks, nagu eespool kirjeldatud.

sprintf ( fmt , expr-nimekiri )

Prindib ext-list vastavalt fmt-le ja tagastab saadud stringi.

str strum ( str )

Uurib str ja tagastab selle numbrilise väärtuse. Kui str algab juhtiva 0-ga , siis strtonum () eeldab, et str on kaheksand kuju . Kui str algab juhtiva 0x või 0X-ga , eeldab strtonum () eeldatavalt, et str on kuueteistkümnendnumber.

sub ( r , s [ , t ] )

Lihtsalt nagu gsub () , kuid asendatud on ainult esimene vastav alamstring.

substr ( s , i [ , n ] )

Tagastab i-st algava n -kategooria alamstringi. Kui n on ära jäetud, kasutatakse ülejäänud s-d .

Tolower ( str )

Tagastab stringi stringi koopia, kus kõik suurtähtedega str on tõlgitud vastavatele väiksematele vastetele. Mitte-tähestiku tähemärgid jäävad samaks.

toupper ( str )

Tagastab stringi stringi koopia, kusjuures kõigi väiketähtedega tähestikus tõlgitakse nende vastavate suurarvutite vastetega. Mitte-tähestiku tähemärgid jäävad samaks.

Ajafunktsioonid

Kuna AWK-programmide esmakordne kasutamine on ajatempliteavet sisaldavate logifailide töötlemine, pakub ajakirjade saamiseks ja vormindamiseks gawk järgmisi funktsioone.

mktime ( datespec )

Runnid täidavad sama vormi ajatempli, mille tagastab systime () . Datepec on vormi string YYYY MM DD HH MM SS [DST] . Stringi sisu on kuus või seitsm, mis tähistab vastavalt kogu aasta, sealhulgas sajand, kuu 1-12, kuu päev 1 kuni 31, päev tund 0 kuni 23, minut 0 kuni 59 ja teine ​​0 kuni 60 ja valikuline päevavalguslipp. Nende arvude väärtused ei pruugi olla määratud kindlaksmääratud vahemikes; Näiteks tund -1 tähendab 1 tund enne südaööd. Arvatakse, et algupärane Gregoriuse kalender on eelmise aasta 0 aastaga 0 ja eelmise aastaga -1 oleval aastal. Arvatakse, et aeg on kohalikus ajavööndis. Kui päevavalguse tähis on positiivne, eeldatakse, et see on suveaja suveaeg; kui null, eeldatakse, et aeg on tavaline; ja kui see on negatiivne (vaikimisi), püüab mktime () määrata, kas suveaeg kehtib määratud aja jooksul. Kui datepec ei sisalda piisavalt elemente või kui saadud aeg on väljaspool vahemikku, tagastab mktime () -1.

strftime ( [ vorming [ , ajatempel ]] )

Vormindab ajatempli vastavalt vormingu spetsifikatsioonile . Ajatempel peaks olema samas vormis kui systime () tagastatud. Kui ajatempel puudub, kasutatakse praegust kellaaega. Kui vorming puudub, kasutatakse kuupäeva (1) väljundiks samaväärset vaikevormingut. Vaadake funktsiooni strftime () funktsiooni ANSI C-vormingus, mis on garanteeritud kättesaadavus. Strftime'i (3) avaliku domeeni versioon ja tema lehitsemine tulevad koos gawkiga ; kui seda versiooni kasutati gawk'i ehitamiseks, siis on kõik manuaalileheküljel kirjeldatud konversioonid saadaval gawkiks.

systime ()

Tagastab kehtiva kellaaja kui sekundite arv pärast ajavahemikku (POSIX-i süsteemid 1970-01-01 00:00:00 UTC).

Bit Manipulations funktsioonid

Alustades versioonist 3.1 gawkist , on saadaval järgmised bitte manipuleerimise funktsioonid. Nad töötavad, muutes topelt-täpsed ujukoma väärtused allkirjastatud pikkadeks täisarvudeks, tehes toiminguid ja muutes seejärel tulemuse ujukomponendiks. Funktsioonid on järgmised:

ja ( v1 , v2 )

Tagastab bitwise AND ja V1 ja V2 antud väärtused.

compl ( val )

Tagastab valti bitwise täienduse.

lshift ( val , count )

Tagasi väärtuse väärtus val , mis on loendamise bittidega edasi lükatud.

või ( v1 , v2 )

Tagastab v1 ja v2 poolt antud väärtuste bitwise OR.

rshift ( val , count )

Tagastab väärtuse val , mis on nihutatud õigesti loendibitidega.

xor ( v1 , v2 )

Tagastage v1 ja v2 poolt antud väärtuste bitwise XOR.

Rahvusvahelistumise funktsioonid

Alustades versioonist 3.1 gawkist , võib AWK programmi raames kasutada järgmisi funktsioone stringide tõlkimiseks jooksu ajal. Lisateabe saamiseks vt GAWK: efektiivne AWK-i programmeerimine .

bindtextdomain ( kataloog [ , domeen ] )

Määrab kataloogi, kus gawk otsib .mo faile, juhul kui neid ei saa või ei saa paigutada "standardsete" kohtadesse (nt testimise ajal). See tagastab kataloogi, kus domeen on `` seotud. ''

Vaikimisi on domeen TEXTDOMAIN väärtus. Kui kataloog on null string ( "" ), siis bindtextdomain () tagastab antud domeeni praeguse sidumise.

dcgettext ( string [ , domeen [ , kategooria ]] )

Tagastab stringi tõlke tekstiväljale domeenis lokaali kategooria kategooria jaoks . Domeeni vaikeväärtus on TEXTDOMAINi praegune väärtus. Kategooria vaikeväärtus on "LC_MESSAGES" .

Kui esitate kategooria väärtuse, peab see olema string, mis vastab ühele GAWK-i kirjeldatud teadaolevatest keelekategooriatest: Effective AWK Programming . Peate esitama ka tekstiväri. Kasutage TEXTDOMAIN, kui soovite kasutada praegust domeeni.

dcngettext ( string1 , string2 , number [ , domeen [ , kategooria ]] )

Tagastab mitmekordse vormi, mida kasutatakse stringi 1 ja stringi 2 tõlke arvu jaoks tekstivõrgu domeenis lokaalse kategooria kategooria jaoks . Domeeni vaikeväärtus on TEXTDOMAINi praegune väärtus. Kategooria vaikeväärtus on "LC_MESSAGES" .

Kui esitate kategooria väärtuse, peab see olema string, mis vastab ühele GAWK-i kirjeldatud teadaolevatest keelekategooriatest: Effective AWK Programming . Peate esitama ka tekstiväri. Kasutage TEXTDOMAIN, kui soovite kasutada praegust domeeni.

KASUTAJA MÄÄRATUD FUNKTSIOONID

AWK funktsioonid on määratletud järgmiselt:

funktsiooni nimi ( parameetrite nimekiri ) { statements }

Funktsioonid täidetakse, kui neid kutsutakse väljundite sees mõlemas mustris või tegevuses. Funktsioonikutses esitatud tegelikke parameetreid kasutatakse funktsioonis deklareeritud formaalsete parameetrite instantierimiseks. Massiivid edastatakse viidetena, teised muutujad edastatakse väärtuse järgi.

Kuna funktsioonid ei olnud algselt AWK keele osaks, on kohalike muutujate säte üsna kohmakas: need on parameetrite loendis deklareeritud lisaparameetritena. Konventsioon seisneb kohalike muutujate eraldamises tegelikest parameetritest parameetrite loendis täiendavate tühikutega. Näiteks:

funktsioon f (p, q, a, b) # a ja b on kohalikud {...} / abc / (...; f (1,2); ...}

Funktsioonikõne vasakpoolne sulgud peavad funktsiooni nime viivitamatult järgima, ilma vahele jäänud tühikuteta. Selle eesmärk on vältida süntaktiline ebamäärasus liitmise operaatoriga. See piirang ei kehti ülaltoodud sisseehitatud funktsioonide kohta.

Funktsioonid võivad helistada üksteisele ja võivad olla rekursiivsed. Funktsiooniparameetrid, mida kasutatakse kohalike muutujatena, initsialiseeritakse nullstringile ja numbrile nulli funktsioonide väljakutsumisel.

Kasutage väärtust return expr, et väärtust funktsioonilt tagasi saada. Tagastatav väärtus on määramata, kui väärtust ei esitata, või kui funktsioon tagastab lõpu "" kukkumise.

Kui --lint on antud, hoiatab gawk kõnedest määratlemata funktsioonide kohta parsimisajas, selle asemel, et töötada ajal. Tundmatu funktsiooni esitamine käitusajal on surmav viga.

Sõna func võib kasutada funktsiooni asemel.

UUED FUNKTSIOONID DYNAMILISELT KASUTATAKSE

Alates versioonist 3.1 gawkist saate dünaamiliselt lisada uusi sisseehitatud funktsioone töötavale gawk-tõlkile . Täielikud üksikasjad jäävad käsiraamatu leheküljest kaugemale; vt GAWK: efektiivne AWK programmeerimine üksikasjade jaoks.

pikendamine ( objekt , funktsioon )

Lingi loomiseks dünaamiliselt objekti nimega jagatud objekti ja käivitada selle objekti funktsioon selle sisselülitamiseks. Need peaksid olema nii stringid kui ka stringid. Tagastab funktsiooni tagastatud väärtuse.

See funktsioon on GAWK- is olemas ja dokumenteeritud : efektiivne AWK-programmeerimine , kuid kõik selle funktsiooni kohta muutuvad tõenäoliselt järgmises versioonis. TÄHELEPANU soovime, et te ei kasuta seda funktsiooni midagi, mida te ei soovi uuesti teha.

SIGNAALID

Pgawk aktsepteerib kahte signaali. SIGUSR1 põhjustab selle, et profiilifail, mis kas awkprof.out , või mis tahes fail on nimega --profiilivalik , profiilifaili tühistamiseks ja profiilifunktsiooni tühistamiseks . Seejärel jätkab see tööd. SIGHUP põhjustab selle profiili mahakukkumise ja kõnepaketi funktsiooni ning seejärel väljumiseks.

NÄITED

Kõigi kasutajate sisselogimisnimede printimine ja sortimine: BEGIN {FS = ":"} {print $ 1 | "sorteeri"} Loendifailid failis: {nlines ++} END {print nlines} Eelseadista iga rida selle faili numbri järgi: {print FNR, $ 0} Siduda ja reanumber (variatsioon teemal): {print NR, $ 0}

Internaliseerimine

Stringkonstandid on tähemärkide jadad, mis on lisatud topeltjutumärkidega. Mitte-inglise keelt kõnelevates keskkondades on võimalik AWK-programmide stringe märkida nii, et see nõuab tõlkimist kohalikku loomulikku keelt. Sellised stringid on märgitud AWK-programmides koos juhtiva allkirjaga (`` _ ''). Näiteks,

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

alati prindib tere, maailm . Aga,

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

võiks printida bonjour, monde Prantsusmaal.

Kohalikku AWK-programmi koostamisel ja käitamisel on mitmeid samme.

1

Lisage BEGIN- toiming, et määrata väärtus TEXTDOMAIN-i jaoks, et määrata tekstiväri oma programmi seostatud nimega.


BEGIN {TEXTDOMAIN = "myprog"}

See võimaldab gawkil leida teie programmiga seotud .mo- faili. Ilma selle sammuta kasutab gawk tekstide domeeni sõnumeid , mis tõenäoliselt ei sisalda teie programmi tõlkeid.

2

Märkige kõik stringid, mida tuleks tõlkida juhtivate alakriipsudega.

3

Vajadusel kasutage programmi vastavalt dcgettext () ja / või bindtextdomain () funktsioone.

4

Käivita gawk --gen-po -f myprog.awk> myprog.po, et genereerida oma programmi jaoks .po- fail.

5

Esitage vastavad tõlked ning ehitage ja installige vastav .mo- fail.

Rahvusvahelistumise funktsioone kirjeldatakse üksikasjalikult GAWK-is: efektiivne AWK-programmeerimine .

Posixi ühilduvus

Gawki peamine eesmärk on ühilduvus POSIXi standardiga, samuti UNIX awk uusima versiooniga. Selleks sisaldab gawk järgmisi kasutaja nähtavaid funktsioone, mida AWK-s ei ole kirjeldatud, kuid mis on osa awk-i Bell Laboratories versioonist ja on POSIXi standardis.

Raamat näitab, et käsurea muutuja määramine juhtub siis, kui awk muidu avab argumendi failina, mis pärast BEGIN-i ploki täitmist. Kuid varasemate rakenduste puhul, kui selline loovutus ilmnes enne mis tahes failinimede esinemist, toimub loovutamine enne BEGIN-i ploki käivitamist. Taotlused tuli sõltuvusse sellest "" funktsioonist. "Kui awk- d muudeti vastavalt oma dokumentatsioonile, lisati -v valikut muutujate määramiseks enne programmi käivitamist, et mahutada rakendusi, mis sõltusid vanast käitumisest. (Seda funktsiooni leppisid kokku nii Bell Laboratories kui ka GNU arendajad.)

Rakendusfunktsioonide -W- valik on saadaval POSIXi standardist.

Argumentide töötlemisel kasutab gawk spetsiaalset valikut `` - '', et signaaliks argumentide lõpp. Ühilduvusrežiimis hoiatab see, kuid muidu ignoreerib määratlemata valikuid. Tavapärases töös edastatakse sellised argumendid AWK-le, et seda töödelda.

AWK-raamat ei määra srand () tagastatavat väärtust. POSIXi standardiga tagastatakse kasutatud seeme, et jälgida juhuslike numbrite järjestusi. Seetõttu tagastab gawk srand () ka oma praeguse seemne.

Muud uued funktsioonid on: mitut -f võimaluste kasutamine (alates MKS awk ); ENVIRONi massiiv; evakueerimisjärjestused \ a ja \ v (tehti algselt gawk'is ja see anti tagasi Bell Laboratories'i versioonile); tolower () ja toupper () sisseehitatud funktsioonid (alates Bell Laboratories versioonist); ja ANSI C konversioonispetsifikatsioonid printf-s (tehti kõigepealt Bell Laboratories versioonis).

Ajaloolised tunnused

Ajalooliste AWK-i rakenduste kaks funktsiooni, mille gawk toetab. Esiteks on sisseehitatud funktsiooni pikkus () võimalik helistada mitte ainult ilma argumendita, vaid ka ilma sulgudeta! Seega

a = pikkus # Püha Algol 60, Batman!

on sama mis mõlemal

a = pikkus ()
a = pikkus ($ 0)

See funktsioon on POSIX-i standardis tähistatud kui `` vananenud '', ja gawk annab hoiatuse selle kasutamise kohta, kui --lint on määratud käsurealt.

Teine funktsioon on kas jätkamise või purunemise väljavõtete kasutamine väljaspool keha, selle jaoks või loopi jaoks. Traditsioonilised AWK rakendused on käsitlenud sellist kasutamist järgmise avaldusega samaväärseks. Gawk toetab seda kasutamist, kui - traditsiooniline on täpsustatud.

GNU laiendid

Gawkil on mitmeid POSIX awk laiendusi. Neid kirjeldatakse käesolevas jaotises. Siin saab kõiki siin kirjeldatud laiendeid keelata, kasutades gawk -traditsioonilist valikut.

Järgmised gawki omadused ei ole POSIX awk-s saadaval.

*

Funktsiooni -f abil nimega failide jaoks ei tehta ühtegi võimalust. Seetõttu ei ole keskkonnamuutuja AWKPATH spetsiifiline.

*

\ X escapejärjestus. (Puudega on --posix .)

*

Fflush () funktsioon. (Puudega on --posix .)

*

Võimalus jätkata jooni pärast ? ja : (Puudega on --posix .)

*

Aktorklassi programmides on kaheksa- ja kuueteistkümnendsüsteemilised konstandid.

*

Muutujad ARGIND , BINMODE , ERRNO , LINT , RT ja TEXTDOMAIN ei ole erilised.

*

IGNORECASEi muutuja ja selle kõrvalmõjud pole saadaval.

*

FIELDWIDTHS muutuja ja fikseeritud laiusega väli jaguneb .

*

PROCINFO massiiv pole saadaval.

*

RS kasutamine regulaaravaldisena.

*

I / O ümbersuunamiseks kättesaadavad erifailide nimed ei ole tunnustatud.

*

| & Operaator koostööprotsesside loomiseks.

*

Võimalus jagada üksikuid tähemärke, kasutades FS-i väärtusena null-stringi, ja kolmandaks argumendiks split () .

*

Valikuline teine ​​argument suletud () funktsiooni jaoks.

*

Match () funktsiooni valikuline kolmas argument.

*

Võimalus kasutada positsioneerimisfunktsioone printerf ja sprintf () abil .

*

Massiivi kasutamine massiivi kogu sisu kustutamiseks.

*

Järgmise faili kasutamine, et loobuda praeguse sisendfaili töötlemisest.

*

() , Bindtextdomain () , compl () , dcgettext () , gensub () , lshift () , mktime () või () , rshift () , strftime () , strtonum () , systime () ja xor () funktsioonid.

*

Lokaliseeritavad stringid.

*

Uute sisseehitatud funktsioonide lisamine funktsiooni extension () abil dünaamiliselt.

AWK-raamat ei määratle lähedase () funktsiooni tagastatavat väärtust. Gawk'i close () tagastab väljundfaili või toru sulgemisel väärtuse fclose (3) või pclose (3). See tagastab protsessi väljumisoleku sisendtoru sulgemisel. Tagastatav väärtus on -1, kui nimega faili, toru või kaasprotsessi ei avanenud ümbersuunamisega.

Kui gawk on viidatud tavapärasele valikule, kui f-i argument -F-i valikule on `` t '', siis on FS seatud tabeldusmärgi tähiseks . Pange tähele, et gawk -F \ t kirjutamise lihtsalt annab shellile tsentritele `` t, '' ja ei liigu `` \ t '' -F valikule. Kuna see on üsna kaudne erijuhtum, ei ole see vaikimisi käitumine. See käitumine ei toimu ka siis, kui --posix on määratud. Lahtrisparaatorina saab vahelehe tegelikuks saamiseks kõige paremini kasutada ühe hinnapakkumisi: gawk -F '\ t' ....

Vaadake teisi käske : oota , lp , täielik , execv , getfacl , ioctl , uniq , rmmod , pvcreate , rsh , unix2dos , cal , fs , cd , iwpriv , swapon , autofs , talk , motd , tasuta , lpr , execl , fdisk , At , kes , iwconfig , ifconfig , vgdisplay , avatud , lsmod , ntohs , mailq , kill , wtmp