Skip to main content

Gawk - Linux Command - Unix ukaz

Anonim

Ime

gawk - vzorec skeniranja in obdelave jezika

Povzetek

gawk Možnosti sloga POSIX ali GNU -f programska datoteka -- mapa …gawk Možnosti sloga POSIX ali GNU -- programsko besedilo mapa …

pgawk Možnosti sloga POSIX ali GNU -f programska datoteka -- mapa …pgawk Možnosti sloga POSIX ali GNU -- programsko besedilo mapa …

Opis

Gawk je implementacija GNU projekta programskega jezika AWK. Skladen je z definicijo jezika v standardnem jeziku za ukazne jezike in komande POSIX 1003.2. Ta različica pa temelji na opisu v Programski jezik AWK , Aho, Kernighan in Weinberger, z dodatnimi funkcijami, ki jih najdemo v različici UNIX sistema System V Release 4 awk . Gawk ponuja tudi najnovejše Bell Laboratories awk razširitve in številne razširitve, specifične za GNU.

Pgawk je profilna različica gawk . V vseh pogledih je enaka gawk , razen da se programi izvajajo počasneje, in samodejno izdela izvedbeni profil v datoteki awkprof.out ko je končano. Oglejte si - profili možnost, spodaj.

V ukazni vrstici so možnosti gawk sam program besedila AWK (če ni dobavljen prek -f ali --mapa možnosti) in vrednosti, ki jih je treba dati na voljo v ARGC in ARGV vnaprej določene spremenljivke AWK.

Oblika izbire

Gawk možnosti so lahko tradicionalne enote z opcijo POSIX, ali dolge možnosti v slogu GNU. Možnosti POSIX se začnejo z enim `` - '', dolge možnosti pa se začnejo z ,, `` ``. Dolge možnosti so na voljo za posamezne funkcije GNU in za funkcije, pooblaščene s POSIX.

Po standardu POSIX, gawk - specifične možnosti so na voljo prek argumentov -W možnost. Večkraten -W možnosti se lahko dobijo Vsak -W možnost ima ustrezno dolgo možnost, kot je opisano spodaj. Argumenti za dolge možnosti so združeni z možnostjo z = podpisati, brez vmesnih presledkov ali pa jih je treba navesti v naslednjem argumentu ukazne vrstice. Dolge možnosti so lahko okrajšane, dokler okrajšava ostane edinstvena.

Opcije

Gawk sprejema naslednje možnosti, navedene abecedno.

-F fs

-polje-separator fs Uporaba fs za vhodni separator polja (vrednost FS vnaprej določeno spremenljivko).

-v var = val

- dodelitev var = val Dodelite vrednost val na spremenljivko var , pred začetkom izvajanja programa. Take spremenljive vrednosti so na voljo ZAČETI blok AWK programa.

-f programska datoteka

--mapa programska datoteka Preberite programski vir AWK iz datoteke programska datoteka , namesto iz prvega argumenta ukazne vrstice. Večkraten -f (ali --mapa) se lahko uporabijo možnosti.

-mf NNN

-gospod NNN Nastavite različne omejitve pomnilnika na vrednost NNN . The f zastava nastavi največje število polj in r zastava nastavi največjo velikost zapisa. Te dve zastavi in -m možnost iz raziskovalne različice Bell Laboratories UNIX awk . Jih ignorirajo gawk , od gawk nima vnaprej določenih omejitev.

-W compat

- Tradicionalno

- kompatibilnost

- tradicionalno Zaženite kompatibilnost način. V načinu združljivosti, gawk obnaša enako kot UNIX awk ; nobena od razširitev, specifičnih za GNU, ni prepoznana. Uporaba - tradicionalno je prednost pred drugimi oblikami te možnosti. Glej GNU EXTENSIONS, spodaj, za več informacij.

-V koplefta

-W avtorskih pravic

- kopija

--avtorske pravice Natisnite kratko različico sporočila z informacijami o avtorskih pravicah GNU na standardnem izhodu in uspešno izstopite.

-W dump-spremenljivke= mapa

--dump-spremenljivke= mapa Natisnite razvrščeni seznam globalnih spremenljivk, njihovih vrst in končnih vrednosti v mapa . Če ne mapa je zagotovljena, gawk uporablja datoteko z imenom awkvars.out v trenutnem imeniku.

Seznam vseh globalnih spremenljivk je dober način za iskanje tipkarskih napak v svojih programih. To možnost bi uporabili tudi, če imate velik program z veliko funkcijami in želite biti prepričani, da vaše funkcije ne nenamerno uporabljajo globalne spremenljivke, za katere mislite, da so lokalni. (To je še posebej preprosta napaka pri preprostih imenskih spremenljivkah, kot so jaz, j, in tako naprej.)

-V pomoč

-W uporaba

- pomoč

-usmer Natisnite relativno kratek povzetek razpoložljivih možnosti na standardnem izhodu. (Po GNU kodirni standardi , te možnosti povzročijo takojšen, uspešen izhod.)

-V lint= usodno

- lint= usodno Navedite opozorila o konstruktih, ki so dvomljive ali neprenosljive za druge implementacije AWK. Z neobveznim argumentom smrtno, opozorila za linte postanejo usodne napake. To je lahko drastično, vendar bo njegova uporaba zagotovo spodbudila razvoj čistejših programov AWK.

-Seveda

- Leto star Navedite opozorila o konstruktih, ki niso prenosljivi na prvotno različico Unixa awk .

-V gen-po

- gen-po Skenirajte in razčlenite program AWK in ustvarite GNU .po format na standardni izhod z vnosi za vse lokalizirane nizov v programu. Sam program se ne izvaja. Oglejte si GNU gettext distribucija za več informacij o .po datoteke.

-W brez decimalnih podatkov

- ne-decimalni podatki Priznajte oktalne in šestnajstiške vrednosti vhodnih podatkov. To možnost uporabite previdno!

-P posix

- posek To se vklopi kompatibilnost način, z naslednjimi dodatnimi omejitvami:

*

x izhodne zapore niso prepoznane.

*

Le prostora in zavihka delujejo kot ločilniki polj FS je nastavljen na en sam prostor, nova linija pa ne.

*

Ne morete nadaljevati vrstic po ? in :.

*

Sinonim func za ključno besedo funkcijo ni priznana.

*

Operaterji ** in **= ni mogoče uporabiti namesto ^ in ^=.

*

The fflush () funkcija ni na voljo.

-W profil= prof_file

- profili= prof_file Pošlji profilne podatke v prof_file . Privzeto je awkprof.out. Ko tečeš gawk , profil je le precej natisnjena različica programa. Ko tečeš pgawk , profil vsebuje število izvedb vsake stavke v programu v levem robu in število funkcijskih klicev za vsako uporabniško določeno funkcijo.

- Ponovni interval

-re-interval Omogoči uporabo izrazi intervala v primerjavi z regularnim izrazom (glej Redni izrazi, spodaj). Intervalni izrazi tradicionalno niso bili na voljo v jeziku AWK. Standard jim je dodal standard POSIX awk in egrep med seboj usklajene. Vendar pa je njihova uporaba verjetno prekinila stare programe AWK, tako da gawk jih ponuja samo, če jih zahtevajo s to možnostjo ali kdaj - posek je določen.

-V vir programsko besedilo

- vir programsko besedilo Uporaba programsko besedilo kot izvorna koda programa AWK. Ta možnost omogoča preprosto prepletanje funkcij knjižnice (uporablja se prek -f in --mapa možnosti) z izvorno kodo, vneseno v ukazni vrstici. Namenjen je predvsem srednje velikim in velikim programom AWK, ki se uporabljajo v lupinskih skriptah.

-W različica

- različica Informacije o različici tiskanja za to posebno kopijo gawk na standardni izhod. To je uporabno predvsem za vedenje, ali je trenutna kopija gawk v vašem sistemu je posodobljen, glede na to, kaj distribucija distribuira. To je koristno tudi pri poročanju hroščev. (Po GNU kodirni standardi , te možnosti povzročijo takojšen, uspešen izhod.)

-- Signal konca možnosti. To je koristno, če lahko samemu programu AWK dovolite dodatne argumente, da se začnejo s »-« ». To je predvsem v skladu s konceptom razčlenjevanja konvencije, ki jo uporablja večina drugih POSIX programov.

V načinu združljivosti so vse druge možnosti označene kot neveljavne, vendar se jih sicer zanemari. Pri normalnem delovanju, dokler je programsko besedilo na voljo, se neznane možnosti prenesejo v program AWK v sistemu ARGV matrika za obdelavo. To je še posebej uporabno za izvajanje AWK programov prek mehanizma "#!" Izvršnega tolmača.

IZVRŠEVANJE PROGRAMA AWK

Program AWK je sestavljen iz zaporedja izjave vzorec in opcijskih definicij funkcij.

vzorec { dejanski izjavi }funkcijo ime ( seznam parametrov ) { izjave }

Gawk najprej bere izvor programa iz programska datoteka (e), če je določeno, od argumentov do - vir, ali iz prvega neuporabnega argumenta v ukazni vrstici. The -f in - vir Možnosti se lahko večkrat uporabljajo v ukazni vrstici. Gawk bere programsko besedilo, kot da bi bilo vse programska datoteka in izvorna besedila ukazne vrstice je bila združena skupaj. To je uporabno za gradnjo knjižnic funkcij AWK, ne da bi jih morali vključiti v vsak nov program AWK, ki jih uporablja. Omogoča tudi zmožnost mešanja knjižničnih funkcij z programi v ukazni vrstici.

Okoljska spremenljivka AWKPATH določa pot iskanja za iskanje pri iskanju izvornih datotek z imenom -f možnost. Če ta spremenljivka ne obstaja, je privzeta pot".: / usr / local / share / awk". (Dejanski imenik se lahko razlikuje, odvisno od tega, kako gawk je bila zgrajena in nameščena.) Če je ime datoteke, ki ga dobite na -f opcija vsebuje znak '' / '', iskanje poti ni izvedeno.

Gawk izvaja programe AWK po naslednjem vrstnem redu. Prvič, vse spremenljive naloge, določene z -v se izvedejo. Naslednji, gawk program prevede v notranjo obliko. Potem, gawk izvede kodo v ZAČETI blok (i) (če obstaja), nato pa nadaljuje, da preberete vsako datoteko, navedeno v ARGV array. Če v ukazni vrstici ni nobenih datotek, gawk bere standardni vhod.

Če ima ime datoteke v ukazni vrstici obliko var = val se obravnava kot spremenljiva naloga. Spremenljivka var bo dodeljena vrednost val . (To se zgodi po poljubnem ZAČETI bloki.) Dodelitev spremenljivke ukazne vrstice je najbolj uporabna za dinamično dodeljevanje vrednosti spremenljivkam, ki jih uporablja AWK, da bi nadzirali, kako je vhod razdeljen v polja in zapise. Prav tako je uporabno za nadzorovanje stanja, če je potrebnih več prehodov v posamezni podatkovni datoteki.

Če vrednost določenega elementa ARGV je prazno (''), gawk preskoči nad njim.

Za vsak zapis v vnosu, gawk preizkusi, če želite, ali se ujema z nobenim vzorec v programu AWK. Za vsak vzorec, ki se ujema z zapisom, je povezan ukrepanje se izvaja. Vzorec se testira po vrstnem redu, ki se pojavi v programu.

Nazadnje, po tem, ko je celoten vnos izčrpan, gawk izvede kodo v END blok (i) (če obstaja).

Spremenljivke, zapisi in polja

AWK spremenljivke so dinamične; nastanejo, ko so prvič uporabljeni. Njihove vrednosti so bodisi plavajoče točke ali nizi ali oboje, odvisno od tega, kako se uporabljajo. AWK ima tudi en dimenzijske matrike; Nizi z več dimenzijami se lahko simulirajo. Vnaprej določeni spremenljivki so nastavljeni kot programski programi; ti bodo opisani kot potrebni in povzeti v nadaljevanju.

Zapisi

Običajno so zapisi ločeni z znaki nove črte. Lahko nadzirate, kako so zapisi ločeni z dodeljevanjem vrednosti vgrajeni spremenljivki RS. Če RS je vsak posamezen znak, ta znak ločuje zapise. V nasprotnem primeru, RS je reden izraz. Besedilo v vnosu, ki se ujema s tem regularnim izrazom, ločuje zapis. Vendar se v načinu združljivosti uporablja samo za ločevanje zapisov. Če RS je nastavljen na ničelni niz, nato pa zapise ločujejo prazne črte. Kdaj RS je nastavljen na ničelni niz, znak nove črte vedno deluje kot ločilo polj, poleg katerekoli vrednosti FS lahko.

Polja

Ker se vsak vhodni zapis prebere, gawk razdeli zapis v polja , z uporabo vrednosti FS spremenljivka kot ločilo polja. Če FS je en sam znak, polja so ločena s tem znakom. Če FS je null niz, nato pa vsak posamezen znak postane ločeno polje. V nasprotnem primeru, FS se pričakuje, da bo popoln redni izraz. V posebnem primeru FS je en sam prostor, polja so ločena s potezami prostorov in / ali zavihkov in / ali novih linij. (Ampak glej razpravo o - posek, spodaj). OPOMBA: Vrednost IGNORECASE (glejte spodaj) vpliva tudi na to, kako so polja razdeljena FS je regularni izraz in kako se podatki ločijo, kdaj RS je reden izraz.

Če je POLOŽAJ spremenljivka je nastavljena na seznam, ki je ločen s presledki, pri čemer ima vsako polje pričakovano fiksno širino in gawk razdeli zapis s pomočjo določenih širin. Vrednost FS se zanemari. Dodelitev nove vrednosti FS prekliče uporabo POLOŽAJin obnovi privzeto obnašanje.

Na vsako polje v vhodnem zapisu se lahko sklicuje njegov položaj, $1, $2, in tako naprej. $0 je celoten zapis. Konstanti ne smejo navajati polj:

n = 5natisni $ n

natisne peto polje v vhodnem zapisu.

Spremenljivka NF je nastavljeno na skupno število polj vhodnega zapisa.

Sklicevanja na neobstoja polja (npr. Polja po $ NF) proizvajajo null-string. Vendar pa dodelitev neobstoječemu polju (npr. $ (NF + 2) = 5) poveča vrednost NF, ustvari vsa vmesna polja z ničelnim nizom kot njihovo vrednost in povzroči vrednost $0 za ponovno izračunavanje, pri čemer je polja ločena z vrednostjo OFS. Sklici na negativna oštevilčena polja povzročajo usodno napako. Zmanjševanje NF povzroči izginotje vrednosti polj, ki presegajo novo vrednost, in vrednost $0 za ponovno izračunavanje, pri čemer je polja ločena z vrednostjo OFS.

Dodeljevanje vrednosti obstoječemu polju povzroči, da se celoten zapis ponovno zgradi, ko $0 se sklicuje. Podobno dodeli vrednost v $0 povzroči, da se zapis reslikuje in ustvari nove vrednosti za polja.

Vgrajene spremenljivke

Gawk vgrajene spremenljivke so:

ARGC

Število argumentov ukazne vrstice (ne vključuje možnosti v gawk , ali programski vir).

ARGIND

Indeks v ARGV trenutno obdelane datoteke.

ARGV

Array argumentov ukazne vrstice. Matrika je indeksirana od 0 do ARGC - 1. Dinamično spreminjanje vsebine ARGV lahko nadzoruje datoteke, uporabljene za podatke.

BINMODE

V sistemih, ki niso POSIX, je določena uporaba "binarnega" načina za vse datoteke I / O. Številčne vrednosti 1, 2 ali 3 določajo, da morajo vhodne datoteke, izhodne datoteke ali vse datoteke uporabljati binarni vhod / izhod. Vrednosti nizov "r", ali "w" določite, da morajo vhodne datoteke ali izhodne datoteke uporabiti binarni vhod / izhod. Vrednosti nizov "rw" ali "wr" da morajo vse datoteke uporabljati binarni V / I. Vsaka druga nizna vrednost se obravnava kot "rw", vendar generira opozorilno sporočilo.

CONVFMT

Format pretvorbe za številke, "% .6g", privzeto.

ENVIRON

Matrika, ki vsebuje vrednosti trenutnega okolja. Matrika je indeksirana s spremenljivkami okolja, pri čemer je vsak element vrednost te spremenljivke (npr.ENVIRON "HOME" mogoče je / home / arnold). Spreminjanje te matrike ne vpliva na okolje, ki ga vidijo programi, ki jih gawk se razvije preko preusmeritve ali sistem ()funkcijo.

ERRNO

Če pride do sistemske napake, naredite preusmeritev za getline, med branjem za getline, ali med a Zapri (), potem ERRNO bo vseboval niz, ki opisuje napako. Vrednost je predmet prevajanja v nealgijskih krajih.

POLOŽAJ

Seznam poljskih širin, ki je ločen od belega prostora. Ko nastavite, gawk analizira vhod v polja fiksne širine, namesto da uporabi vrednost FS spremenljivka kot ločilo polja.

IME DATOTEKE

Ime trenutne vhodne datoteke.Če v ukazni vrstici niso podane nobene datoteke, je vrednost IME DATOTEKE je `` - ''. Vendar, IME DATOTEKE je nedefinirano znotraj ZAČETI blok (razen če ga nastavi getline).

FNR

Vhodna številka zapisa v trenutni vhodni datoteki.

FS

Razdelilnik vnosnega polja, privzeti prostor. Glej Polja, nad.

IGNORECASE

Nadzira čustveno občutljivost vseh regularnih izrazov in nizov operacij. Če IGNORECASE nevelična vrednost, nato primerjave nizov in ujemanje vzorcev v pravilih, delitev polja z FS, zapis, ki se ločuje z RS, ki ustreza regularnemu izrazu ~in !~, in gensub (), gsub (), indeks (), ujemanje (), split (), in sub () vgrajene funkcije vse ignorirajo primer pri izvajanju regularnih izraznih operacij. OPOMBA: Podpisovanje matrike je ne prizadeta, pa tudi ni asort () funkcijo.

Tako, če IGNORECASE ni enak nič, / aB / se ujema z vsemi nizi "ab", "aB","Ab", in "AB". Kot pri vseh spremenljivkah AWK, je začetna vrednost IGNORECASE je nič, tako da so vsi regularni izrazi in nizi operacij običajno občutljivi na velikost črk. V Unixu se pri ignoriranju primera uporablja celoten niz znakov ISO 8859-1 Latin-1.

LINT

Zagotavlja dinamičen nadzor nad - lint možnost iz programa AWK. Če je res, gawk natisne lint opozorila. Ko je napačen, ne. Ko je dodeljena vrednost niza "usodni", opozorila linta postanejo usodne napake, točno tako - lint = smrtno. Vsaka druga resnična vrednost natisne opozorila.

NF

Število polj v trenutnem vhodnem zapisu.

NR

Skupno število dosedanjih dosedanjih vnosov.

OFMT

Izhodni format za številke, "% .6g", privzeto.

OFS

Izhodni separator polja, privzeti prostor.

ORS

Izhodni zapis ločitelja, privzeto novo linijo.

PROCINFO

Elementi te matrike omogočajo dostop do informacij o tekočem AWK programu. V nekaterih sistemih lahko v matriki obstajajo elementi, "skupina1" skozi "skupina n ' Za nekatere n , kar je število dodatnih skupin, ki jih ima proces. Uporabi v da preizkusi te elemente. Zagotovljeni bodo naslednji elementi:

PROCINFO "egid"

vrednost getegid (2) sistemski klic.

PROCINFO "euid"

vrednost geteuid (2) sistemski klic.

PROCINFO "FS"

"FS" če delitev polja z FS je v veljavi, ali "POLNJENE LASTNOSTI" če delitev polja z POLOŽAJ je v veljavi.

PROCINFO "gid"

vrednost getgid (2) sistemski klic.

PROCINFO "pgrpid"

ID skupine procesov trenutnega postopka.

PROCINFO "pid"

ID procesa trenutnega procesa.

PROCINFO "ppid"

ID nadrejenega postopka trenutnega postopka.

PROCINFO "uid"

vrednost getuid (2) sistemski klic.

RS

Vhodni zapis ločevalnika, privzeto novo linijo.

RT

Zapisnik terminatorja. Gawk sklopov RT na vhodno besedilo, ki ustreza znaku ali regularnemu izrazu, ki ga je določil RS.

RSTART

Indeks prvega znaka, ki ga ujema ujemanje (); 0, če ni zadetka. (To pomeni, da se kazalci znakov začnejo pri eni.)

RLENGTH

Dolžina vrvice, ki se ujema z ujemanje (); -1, če se ne ujema.

SUBSEP

Znak, ki se uporablja za ločevanje več indeksov v elementih matrike, privzeto ' 034'.

TEXTDOMAIN

Besedilna domena programa AWK; se uporabljajo za iskanje lokaliziranih prevodov za nize programa.

Nizi

Nizi so indeksirani s kvadratastimi oklepaji ( in ). Če je izraz izrazni seznam ( expr , expr …), potem je podmnožica niza niz, ki sestoji iz združitve (niza) vrednosti vsakega izraza, ločenega z vrednostjo SUBSEP spremenljivka. Ta objekt se uporablja za simulacijo večplastno razporejenih nizov. Na primer:

i = "A"; j = "B"; k = "C"x i, j, k = "Zdravo, svet n"

dodeljuje niz "Zdravo, svet n" na element matrike x ki ga indeksira niz"A 034B 034C". Vsi nizi v AWK so asociativni, to je indeksirani z nizi vrednosti.

Posebni operater v se lahko uporablja v če ali medtem izjavo, če želite videti, ali ima matrika indeks, ki je sestavljen iz določene vrednosti.

če (val v matriki) tiskana matrika val

Če ima matrika več indeksov, uporabite (i, j) v matriki.

The v konstrukt se lahko uporablja tudi v a za zanke, da ponovite vse elemente matrike.

Element se lahko izbriše iz polja z uporabo izbrisati izjavo. The izbrisati izjavo lahko uporabite tudi za brisanje celotne vsebine matrike, samo tako, da navedete ime matrike brez podvrsta.

Spremenljivka tipkanja in preusmeritev

Spremenljivke in polja so lahko (plavajoče) številke ali nizi ali oboje. Kako je razlaga vrednost spremenljivke odvisna od njenega konteksta. Če se uporablja v numeričnem izrazu, se bo obravnaval kot število, če se bo uporabil kot niz, se bo obravnaval kot niz.

Če želite spremenljivko spremeniti za številko, ji dodajte 0; da ga je treba obravnavati kot niz, jo združiti z ničelnim nizom.

Ko je niz pretvorjen v številko, se pretvorba izvede z uporabo strtod (3). Številka se pretvori v niz z uporabo vrednosti CONVFMT kot formatni niz za sprintf (3), s številčno vrednostjo spremenljivke kot argument. Čeprav so vse številke v AWK plavajoče točke, so integralne vrednosti nenehno pretvori kot cela števila. Tako, podano

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

spremenljivka b ima vrednost v nizu '12' in ne '12.00'.

Gawk primerja naslednje: Če sta dve spremenljivki numerični, jih numerično primerjata. Če je ena vrednost numerična in druga ima nizno vrednost, ki je "numerični niz", se primerjave opravijo tudi številčno. V nasprotnem primeru se numerična vrednost pretvori v niz in opravi se primerjava nizov. Dve nizi se seveda primerjajo kot strune. Upoštevajte, da standard POSIX uporablja koncept `` numeričnega niza '' povsod, tudi za konstante nizov. Vendar je to očitno napačno, in gawk to ne naredi. (Na srečo je to določeno v naslednji različici standarda.)

Upoštevajte to niz konstant, kot so '57', so ne numerični nizi, so konstante nizov. Ideja o »numeričnem nizu« velja samo za polja, getline vnos, IME DATOTEKE, ARGV elementi, ENVIRON elemente in elemente matrike, ki jih ustvari split () ki so numerični nizi. Osnovna ideja je, da uporabniški vhod , zato je treba obravnavati samo uporabniški vnos, ki je videti številčno.

Neinicializirane spremenljivke imajo številsko vrednost 0 in vrednost niza "" (ničlo ali prazno, niz).

Octal in hexadecimal Constants

Začenši z različico 3.1 gawk, lahko v izvorni kodi programa AWK uporabite osmične in šestnajstiške konstante C-style. Na primer, oktalna vrednost 011 je enako decimalnim številom 9, in šestnajstiško vrednost 0x11 je enako decimalnim številom 17.

String Constants

Konstante nizov v AWK so zaporedja znakov, zaprtih med dvojnimi narekovaji ('). Znotraj nizov, nekatere pobegne sekvence so priznane, kot v C. To so:

\

Dobesedno poševnico.

a

"Opozorilni" znak; običajno znak ASCII BEL.

b

backspace.

f

obrazec za krmo.

n

nova linija.

r

povratni voziček.

t

horizontalni jeziček.

v

navpični zavihek.

x šestnajst števk

Znak, ki ga predstavlja niz šestnajstiških številk po x. Tako kot v ANSIC-u, so vse naslednje šestnajstiške števke obravnavane kot del zaporedja pobega. (Ta funkcija nam mora povedati nekaj o oblikovanju jezika s strani odbora.) Na primer, " x1B" je znak ASCIIESC (pobeg).

ddd

Znak, ki ga predstavlja 1-, 2- ali 3-mestno zaporedje osmih številk. Npr. ' 033' je znak ASCII ESC (izhod v sili).

c

Dobesedni znak c .

Zaporne poti se lahko uporabijo tudi v stalnih regularnih izrazih (npr./ t f n r v / ujema s presledki).

V načinu združljivosti se znaki, ki jih predstavljata oktalna in šestnajstiška izhodna zaporedja, obravnavata dobesedno, kadar se uporabljajo v regularnih izraznih konstantah. Tako, / a 52b / je enakovreden/ a * b /.

Patterns and Actions

AWK je linijsko usmerjen jezik. Vzorec nastopi najprej in nato akcijo. Izjave o dejanju so priložene { in }. Ali vzorec morda manjka ali pa morda manjka ukrep, vendar seveda ne oboje. Če vzorec manjka, se dejanje izvaja za vsak posamezen zapis vnosa. Manjka ukrepanje je enakovredno

{print}

ki natisne celoten zapis.

Komentarji se začnejo s znakom "#" in nadaljujejo do konca vrstice. Prazne črte se lahko uporabijo za ločevanje izjav. Običajno se izjava konča z novo linijo, vendar to ne velja za vrstice, ki se končajo s »,« », {, ?, :, &&, ali ||. Vrstice, ki se končajo storiti ali drugače tudi njihove izjave se samodejno nadaljujejo v naslednji vrstici. V drugih primerih se lahko črta nadaljuje tako, da se konča s ', v tem primeru se nova linija ne upošteva.

Več stavkov se lahko doda na eno vrstico tako, da jih ločite s "`; "". To velja za oba izraza v delovnem delu vzorca-akcijski par (običajni primer) in za izjave o vzoru vzorec.

Patterns

AWK vzorci so lahko eden od naslednjih:

ZAČETI END / vsakdanje izražanje / relacijski izraz vzorec && vzorec vzorec || vzorec vzorec ? vzorec : vzorec ( vzorec ) ! vzorec vzorec1 , vzorec2

ZAČETI in END so dve posebni vrsti vzorcev, ki niso testirani glede na vložek. Delovni deli vseh ZAČETI vzorci se združijo, kot da bi bile vse izjave napisane v enem samem ZAČETI blok. Izvedejo se pred branjem katerega koli vhoda. Podobno je vse END bloki se združijo in izvedejo, ko je vhodni vir izčrpan (ali ko je izhod izjava je izvedena). ZAČETI in END vzorcev ni mogoče kombinirati z drugimi vzorci v vzorčnih izrazih. ZAČETI in END vzorci ne morejo manjkajoči delovni deli.

Za / vsakdanje izražanje / vzorci, povezana izjava se izvede za vsak vhodni zapis, ki se ujema z regularnim izrazom. Redni izrazi so enaki kot v egrep (1) in so povzeti v nadaljevanju.

A relacijski izraz lahko uporabi kateri koli od operaterjev, opredeljenih v nadaljevanju, v oddelku o ukrepih. Na splošno preverjajo, ali nekatera polja ustrezajo določenim regularnim izrazom.

The &&, ||, in ! operaterji so logični IN, logični OR in logični NOT, enako kot v C. Izvajajo se kratkoročno ocenjevanje, prav tako kot v C, in se uporabljajo za kombiniranje bolj primitivnih izrazov. Kot v večini jezikov se lahko oklepaji uporabijo za spremembo vrstnega reda ocenjevanja.

The ?: operater je podoben istemu operaterju v C. Če je prvi vzorec resničen, je vzorec, uporabljen za preizkušanje, drugi vzorec, drugače je tretji. Ocenjen je le eden od drugega in tretjega vzorca.

The vzorec1 , vzorec2 oblika izraza se imenuje a vzorec razpona . Ujema se z vsemi vhodnimi zapisi, ki se začnejo z zapisom, ki se ujema vzorec1 , in nadaljuje do zapisa, ki se ujema vzorec2 , vključujoč. Ne združuje se z nobenim drugim vzorcem.

Redni izrazi

Redni izrazi so razširjena vrsta, ki jo najdemo v egrep . Sestavljene so iz znakov, kot sledi:

c

se ujema z non-metacharacter c .

c

se ujema z dobesednim znakom c .

.

se ujema z vsemi znaki vključno z nova linija.

^

se ujema z začetkom niza.

$

se ujema s koncem niza.

abc …

Seznam znakov se ujema z znaki abc … .

^ abc …

negiran seznam znakov, se ujema z vsemi znaki, razen abc … .

r1 | r2

izmenjava: tudi tekme r1 ali r2 .

r1r2

koncenacija: tekme r1 , in potem r2 .

r +

se ujema z eno ali več r je.

r *

ujema nič ali več r je.

r ?

ujema nič ali eno r je.

( r )

združevanje: tekme r .

r { n }

r { n ,}

r { n , m } Ena ali dve številki v notranji naramnici označujeta intervalni izraz . Če je v oklepajih ena številka, prejšnji regularni izraz r se ponovi n krat. Če sta dve številki ločeni z vejico, r se ponovi n do m krat. Če je eno številko, ki mu sledi vejica, potem r se ponovi vsaj n krat.

Intervalni izrazi so na voljo le, če jih imate - posek ali -re-interval je podan v ukazni vrstici.

y

se ujema z praznim nizom na začetku ali koncu besede.

B

se ujema s praznim nizom znotraj besede.

<

se ujema s praznim nizom na začetku besede.

>

se ujema s praznim nizom na koncu besede.

w

se ujema z vsemi besednimi sestavinami (črka, števka ali podčrtava).

W

se ujema z vsemi znaki, ki niso sestavine besed.

`

se ujema z praznim nizom na začetku pufra (niz).

'

se ujema s praznim nizom na koncu vmesnega pomnilnika.

Zaporedna izhodišča, ki veljajo v konstantah nizov (glej spodaj), veljajo tudi v regularnih izrazih.

Razred znakov so nove funkcije, uvedene v standardu POSIX. Razred znakov je posebna oznaka za opis seznama znakov, ki imajo določen atribut, vendar se dejanski znaki lahko razlikujejo od države do države in / ali od znaka do nabora znakov. Na primer, pojem abecednega značaja se razlikuje v ZDA in Franciji.

Razred znakov je veljaven samo v regularnem izrazu znotraj nosilce seznama znakov. Znaki razredov sestavljajo :, ključna beseda, ki označuje razred, in :. Razredi znakov, ki jih določa standard POSIX, so:

: alnum:

Alfanumerični znaki.

: alfa:

Abecedni znaki.

: prazno:

Znaki vesolja ali kartice.

: cntrl:

Kontrolni znaki.

: številka:

Številčni znaki.

: graf:

Znaki, ki so tiskljivi in ​​vidni. (Prostor se lahko natisne, vendar ni viden, medtem ko je a je oboje.)

: nižje:

Spodnji abecedni znaki.

: natisni:

Znaki, ki jih je mogoče natisniti (znake, ki niso kontrolni znaki.)

: punct:

Znaki interpunkcije (znaki, ki niso črka, števke, kontrolni znaki ali znaki za presledek).

: prostor:

Znaki vesolja (na primer prostor, jeziček in obrazec, da navedete nekaj).

: zgornji:

Zgornji črki abecednih znakov.

: xdigit:

Znaki, ki so šestnajstiški znaki.

Na primer, pred standardom POSIX bi se morali ujemati z alfanumeričnimi znaki / A-Za-z0-9 /. Če je v vašem znakovnem nizu bilo drugih abecednih znakov, se to ne bi ujemalo z njimi in če je vaš znak znakov drugačen od ASCII, se to morda ne bo ujemalo tudi z alfanumeričnimi znaki ASCII. Z razredi znakov POSIX lahko napišete/ : alnum: /, in to se ujema z abecednimi in številskimi znaki v vašem nizu znakov.

Na seznamu znakov se lahko pojavita še dve posebni zaporedji. Te veljajo za nabore znakov brez ASCII, ki imajo lahko en sam simbol (imenovan primerjalni elementi ), ki so predstavljeni z več kot enim znakovom, kot tudi več znakov, ki so enakovredni primerjava , ali razvrščanje, namene. (Npr. V francoščini so preprosti "e" in grobi akentirani e "enakovredni.)

Združevanje simbolov

Simbol za zbiranje je večkotni primerjalni element, ki je priložen . in .. Na primer, če ch potem je primerjalni element .ch. je regularni izraz, ki se ujema s tem primerjalnim elementom, medtem ko ch je regularni izraz, ki se tudi ujema c ali h.

Enakovredni razredi

Enakovreden razred je ime, specifično za jezik, za seznam znakov, ki so enakovredni. Ime je priloženo = in =. Na primer ime e se lahko uporablja za predstavitev vseh "e", "e", "" in "e". "V tem primeru, = e = je regularni izraz, ki se ujema z nobenim e, e ', ali e`.

Te funkcije so zelo dragocene v ne-angleško govorečih krajih. Knjižnica deluje tako gawk uporaba za ujemanje regularnega izraza trenutno priznava le razrede znakov POSIX; ne prepoznajo simbolov za primerjanje ali razredov enakovrednosti.

The y, B, <, >, w, W, `, in ' operaterji so specifični za gawk ; gre za razširitve, ki temeljijo na objektih v knjižnicah GNU regularnega izraza.

Različne možnosti ukazne vrstice nadzorujejo, kako gawk interpretira znake v regularnih izrazih.

Ni možnosti

V privzetem primeru, gawk nudijo vse možnosti POSIX regularnih izrazov in operaterje regularnega izraza GNU, opisane zgoraj. Vendar pa izrazi intervala niso podprte.

- posek

Podprti so le regularni izrazi POSIX, operaterji GNU niso posebni. (Npr. w se ujema z dobesedno w). Intervalni izrazi so dovoljeni.

- tradicionalno

Tradicionalni Unix awk regularni izrazi se ujemajo. Operaterji GNU niso posebni, intervalni izrazi niso na voljo, niti razredi znakov POSIX (: alnum: in tako naprej). Znaki, opisani z oktalnimi in heksadecimalnimi zaporedji za izogibanje, se obravnavajo dobesedno, tudi če predstavljajo metacharacters regularnega izraza.

-re-interval

Dovoli intervalne izraze v regularnih izrazih, tudi če - tradicionalno je bila zagotovljena.

Akcije

Izjave o dejanju so priložene v zavihkih, { in }. Izjave o dejanju so običajne izjave o dodelitvi, pogojni in zanki, ki jih najdemo v večini jezikov. Na voljo so operatorji, kontrolni stavki in vhodno / izhodni izjavi po tistih v C.

Operaterji

Operaterji v AWK so po padajočem prednostnem vrstnem redu

()

Združevanje

$

Referenčno polje.

++ --

Povečanje in zmanjšanje, tako predpono kot postfix.

^

Ponovitev (** se lahko uporabijo tudi, in **= za operaterja dodelitve).

+ - !

Unary plus, unary minus in logical negation.

* / %

Razmnoževanje, delitev in modul.

+ -

Dodajanje in odštevanje.

prostor

Konkreten niz.

< >

<= >=

!= == Redni relacijski operaterji.

~ !~

Ujemanje regularnega izraza, negirano ujemanje. OPOMBA: Ne uporabljajte stalnega regularnega izraza (/ foo /) na levi strani a ~ ali !~. Uporabite samo eno na desni strani. Izraz / foo / ~ exp ima enak pomen kot (($ 0 ~ / foo /) ~ exp ). To je običajno ne kaj je bilo namenjeno.

v

Članstvo v matriki.

&&

Logično IN.

||

Logično ALI.

?:

Pogojni izraz C. To je oblika expr1 ? expr2 : expr3 . Če expr1 je res, vrednost izraza je expr2 , drugače je expr3 . Samo eden izmed expr2 in expr3 Ocenjujemo.

= += -=

*= /= %= ^= Naloga. Oba absolutna naloga ( var = vrednost ) in dodelitev operatorja (druge oblike).

Kontrolne izjave

Kontrolni izkazi so naslednji:

če ( stanje ) izjavo drugače izjavo medtem ( stanje ) izjavo storiti izjavo medtem ( stanje ) za ( expr1 ; expr2 ; expr3 ) izjavo za ( var v array ) izjavo odmor nadaljuj izbrisati array indeks izbrisati array izhod izraz { izjave }

Izjave I / O

Vhodni / izhodni izpiski so naslednji:

blizu ( mapa , kako )

Zapri datoteko, cev ali so-proces. Neobvezno kako je treba uporabiti le pri zapiranju enega konca dvosmerne cevi na skupni postopek. Poleg tega mora biti niza vrednosti "do" ali "od".

getline

Nastavite $0 od naslednjega vhodnega zapisa; nastavite NF, NR, FNR.

getline < mapa

Nastavite $0 od naslednjega zapisa mapa ; nastavite NF.

getline var

Nastavite var od naslednjega vhodnega zapisa; nastavite NR, FNR.

getline var < mapa

Nastavite var od naslednjega zapisa mapa .

ukaz | getline var

Run ukaz napeljati izhod v $0 ali var , kot zgoraj.

ukaz | & getline var

Run ukaz kot ko-procesno usmerjanje proizvodnje v $0 ali var , kot zgoraj. So-procesi so a gawk razširitev.

Naslednji

Zaustavite obdelavo trenutnega vhodnega zapisa. Naslednji vhodni zapis se prebere in obdelava se začne s prvim vzorcem v programu AWK. Če se doseže konec vhodnih podatkov, je END bloki, če obstajajo, se izvajajo.

naslednjo datoteko

Zaustavite obdelavo trenutne vhodne datoteke. Naslednji vnos vhodnega zapisa prihaja iz naslednje vhodne datoteke. IME DATOTEKE in ARGIND so posodobljeni, FNR se ponastavi na 1, obdelava pa se začne s prvim vzorcem v programu AWK. Če se doseže konec vhodnih podatkov, je END bloki, če obstajajo, se izvajajo.

natisnite

Natisne trenutni zapis. Izhodni zapis se zaključi z vrednostjo ORS spremenljivka.

natisnite expr-list

Natisne izraze. Vsak izraz je ločen z vrednostjo OFS spremenljivka. Izhodni zapis se zaključi z vrednostjo ORS spremenljivka.

natisnite expr-list > mapa

Natisne izraze na mapa . Vsak izraz je ločen z vrednostjo OFS spremenljivka. Izhodni zapis se zaključi z vrednostjo ORS spremenljivka.

printf fmt, expr-list

Oblikujte in natisnite.

printf fmt, expr-list > mapa

Oblikujte in natisnite mapa .

sistem ( cmd-vrstica )

Izvedite ukaz cmd-vrstica in vrnite status izhoda. (To morda ni na voljo v sistemih, ki niso POSIX.)

fflush ( mapa )

Izpraznite vse odbojnike, povezane z odprto izhodno datoteko ali cevjo mapa . Če mapa manjka, potem se standardni izhod izpihne. Če mapa je ničelni niz, potem so vse odprte izhodne datoteke in cevi popuščene.

Dodatne preusmeritve so dovoljene natisnite in printf.

natisni … >> mapa

dodaja izhod v mapa .

natisni … | ukaz

piše na cevi.

natisni … | & ukaz

pošlje podatke v skupni proces.

The getline ukaz vrne 0 na konec datoteke in -1 pri napaki. Ob napaki, ERRNO vsebuje niz, ki opisuje težavo.

OPOMBA: Če uporabljate cev ali postopek obdelave getline, ali iz natisnite ali printf v zanki, ti moraš uporaba Zapri () ustvariti nove primere ukaza. AWK samodejno ne zapira cevi ali sodeluje pri vrnitvi EOF.

Izjava printf

AWK različice printf izjavo in sprintf () (glejte spodaj), sprejmite naslednje formate specifikacij konverzij:

% c

Znak ASCII. Če je argument uporabljen za % c je numerično, obravnava se kot znak in natisne. V nasprotnem primeru se predpostavlja, da je argument niz, in natisnjen je le prvi znak tega niza.

% d, %jaz

Decimalna številka (celotni del).

% e,% E

Številka plavajoče točke obrazca - d.dddddde + - dd. The % E formatne uporabe E namesto e.

% f

Številka plavajoče točke obrazca - ddd.dddddd.

% g,% G

Uporaba % e ali % f konverzija, kar je krajše, pri čemer se neusklajene ničle zatrjujejo. The% G formatne uporabe % E namesto % e.

% o

Neznačena oktalna številka (tudi celo število).

% u Neocenjena decimalna številka (znova, celo število).

% s

Niz znakov.

% x,% X

Šestnajstiško število, ki je nepodpisano (celo število). The % X formatne uporabe ABCDEF namestoabcdef.

%%

Samski % znak; noben argument ni pretvorjen.

Izbirni so lahko dodatni parametri med % in kontrolna črka:

šteje $

Uporabi šteje argument na tej točki v formatiranju. To se imenuje a pozicijski specifikator in je namenjen predvsem uporabi v prevedenih različicah niza formatov, ne v izvirnem besedilu programa AWK. Je gawk razširitev.

-

Izraz mora biti levo upravičen znotraj svojega področja.

prostor

Za številske konverzije prednastavite pozitivne vrednosti s presledkom in negativne vrednosti z znakom minus.

+

Znak plus, ki je bil uporabljen pred modifikatorjem širine (glejte spodaj), pravi, da vedno pošilja znak za številčne konverzije, tudi če so podatki, ki jih je treba oblikovati, pozitivni. The + preglasi prostorski modifikator.

#

Za nekatere kontrolne črke uporabite »nadomestni obrazec«. Za % o, zagotovijo vodilno ničlo. Za % x, in % X, ponuditi vodilni 0x ali 0X za ničen rezultat. Za % e, % E, in % f, rezultat vedno vsebuje decimalno vejico. Za % g, in % G, sledilne ničle se ne odstranijo iz rezultata.

0

Vodilni 0 (nič) deluje kot zastava, ki označuje, da je treba izhod namesto prostorov namestiti z ničli. To velja tudi za ne-številčne izhodne formate. Ta zastava ima le učinek, če je širina polja širša od vrednosti, ki jo želite natisniti.

premer

Polje je treba namestiti na to širino. Polje je običajno opremljeno s presledki. Če je 0zastava je bila uporabljena, je obložena z ničli.

. prec

Številka, ki določa natančnost uporabe pri tiskanju. Za % e, % E, in % fformatov, to določa število številk, ki jih želite natisniti desno od decimalne vejice. Za % g, in % G formatov, določa maksimalno število pomembnih števk. Za % d, % o, %jaz, % u, % x, in % X formatov, določa najmanjše število številk za tiskanje. Za % s, določa maksimalno število znakov iz niza, ki ga je treba natisniti.

Dinamična premer in prec zmogljivosti ANSI C printf () Podprte so podprogrami. A * namesto bodisi premer ali prec specifikacije povzročajo, da se njihove vrednosti vzamejo s seznama argumentov na printf ali sprintf (). Če želite uporabiti pozicionirni opis z dinamično širino ali natančnostjo, napišite šteje $ Po * v formatnem nizu. Na primer, "% 3 $ * 2 $. * 1 $ s".

Posebna imena datotek

Pri preusmeritvi I / O iz obeh natisnite ali printf v datoteko ali prek getline iz datoteke, gawk prepoznava določena posebna imena datotek znotraj. Ta imena datotek omogočajo dostop do deskriptorjev odprtih datotek, podedovanih od gawk starševski proces (navadno lupina). Ta imena datotek se lahko uporabijo tudi v ukazni vrstici za poimenovanje podatkovnih datotek. Filename so:

/ dev / stdin

Standardni vnos.

/ dev / stdout

Standardni izhod.

/ dev / stderr

Standardni izhod napake.

/ dev / fd / n

Datoteka, povezana z deskriptorjem odprtega datoteke n .

To so še posebej uporabne za sporočila o napakah. Na primer:

natisni "Izginil si!" > "/ dev / stderr"

ker bi ga sicer morali uporabiti

natisni "Izginil si!" | "mačka 1> in 2"

Naslednja posebna imena datotek se lahko uporabljajo z |& sodelavec za ustvarjanje omrežnih povezav TCP / IP.

/ inet / tcp / lport / rhost / rport

Datoteka za povezavo TCP / IP na lokalnih vratih lport na oddaljeni gostitelj rhost na oddaljenem pristanišču rport . Uporabite pristanišče 0 da sistem izbere vrata.

/ inet / udp / lport / rhost / rport

Podobno, vendar uporabite UDP / IP namesto TCP / IP.

/ inet / surovi / lport / rhost / rport

Rezervirano za nadaljnjo uporabo.

Druga posebna imena datotek omogočajo dostop do informacij o teku gawk proces. Te datoteke so zdaj zastarele. Uporabi PROCINFO polje za pridobitev informacij, ki jih zagotavljajo. Filename so:

/ dev / pid

Branje te datoteke vrne identifikacijsko številko procesa trenutnega postopka, v decimalnem zaporedju, prekinjeno z novo linijo.

/ dev / ppid

Branje te datoteke vrne matično identifikacijsko številko procesa trenutnega postopka, v decimalnem zaporedju, prekinjeno z novo linijo.

/ dev / pgrpid

Branje te datoteke vrne identifikacijsko skupino procesa trenutnega postopka, v decimalki, zaključeno z novo linijo.

/ dev / uporabnik

Branje te datoteke vrne en zapis, ki se zaključi z novo linijo. Polja so ločena s presledki. $1 je vrednost getuid (2) sistemski klic, $2 je vrednost geteuid (2) sistemski klic, $3 je vrednost getgid (2) sistemski klic, in $4 je vrednost getegid (2) sistemski klic. Če obstajajo dodatna polja, so to ID-ji skupine, ki jih vrnejo getgroups (2). V večini sistemov ni mogoče podpirati več skupin.

Številske funkcije

AWK ima vgrajene aritmetične funkcije:

atan2 ( y , x )

Vrne arktangent y / x v radianih.

cos ( expr )

Vrne kosinus expr , ki je v radianih.

exp ( expr )

Eksponentna funkcija.

int ( expr )

Skrajša na celo število.

dnevnik ( expr )

Funkcija naravnega logaritma.

rand ()

Vrne naključno število med 0 in 1.

greh ( expr )

Vrne sinus expr , ki je v radianih.

sqrt ( expr )

Funkcija kvadratnega korena.

srand ( expr )

Uporablja se expr kot novo seme za generator naključnih števil. Če ne expr je zagotovljen čas uporabe dneva. Povratna vrednost je prejšnje seme za generator naključnih števil.

Funkcije vrstic

Gawk ima naslednje vgrajene nizske funkcije:

asort ( s , d )

Vrne število elementov v izvorni matriki s . Vsebina s so razvrščene z uporabo gawk normalna pravila za primerjavo vrednosti in indeksi razvrščenih vrednosti s se zamenjajo s zaporednimi celi števili, ki se začnejo z 1. Če je izbirna ciljna matrika d je določen, nato s se najprej podvoji d , in potem d je razvrščena, tako da zapusti indekse izvorne matrike s nespremenjeno.

gensub ( r , s , h , t )

Poiščite ciljni niz t za zadetke regularnega izraza r . Če h je niz, ki se začne s g ali G, nato pa zamenjajte vse zadetke r z s . V nasprotnem primeru, h je številka, ki kaže, katera ujemanje r zamenjati. Če t ni priložen, $0 Namesto tega se uporablja. V nadomestnem besedilu s , zaporedje n , kje n je številka od 1 do 9, se lahko uporablja za označevanje le besedila, ki ustreza n pod okriljem oklepajev. Zaporedje 0 predstavlja celotno ujemanje besedila, kot tudi znak &. Za razliko od sub () in gsub (), se spremenjeni niz vrne kot rezultat funkcije, in izvirni ciljni niz je ne spremenjeno.

gsub ( r , s , t )

Za vsak podstavek, ki ustreza regularnemu izrazu r v nizu t , zamenjajte niz s in vrnite število zamenjave. Če t ni dobavljen, uporablja $0. An & v nadomestnem besedilu se nadomesti z dejansko ujemajočim besedilom. Uporaba & dobiti dobesedno&. (To mora biti vneseno kot '\&'; glej GAWK: Učinkovito programiranje AWK za popolnejšo razpravo o pravilih za & 's in poševnice v nadomestnem besedilu sub (), gsub (), in gensub ().)

indeks ( s , t )

Vrne indeks niza t v nizu s , ali 0 če t ni prisoten. (To pomeni, da se kazalci znakov začnejo pri eni.)

dolžina ( s )

Vrne dolžino niza s , ali dolžino $0 če s ni na voljo.

tekmo ( s , r , a )

Vrne pozicijo v s kjer je regularni izraz r se pojavi ali 0, če r ni prisoten in nastavi vrednosti RSTART in RLENGTH. Upoštevajte, da je zaporedje argumentov enako kot za ~ operater: str ~ ponovno . Če array a je zagotovljena, a se izbriše in nato elementi 1 do n se napolnijo z deli s ki se ujemajo z ustrezno podrazenitvijo oklepajev v r . 0-ti element a vsebuje del s ki se ujema s celotnim regularnim izrazom r .

split ( s , a , r )

Razdeli niz s v matriko a na regularnem izrazu r in vrne število polj. Če r je izpuščen, FS Namesto tega se uporablja. Matrika a se najprej očisti. Razdelitev se obnaša enako kot delitev polja, opisana zgoraj.

sprintf ( fmt , expr-list )

Tiskanje expr-list po navedbah fmt , in vrne posledični niz.

strtonum ( str )

Pregleduje str , in vrne številčno vrednost. Če str se začne z vodilnim 0, strtonum ()predpostavlja to str je oktalsko število. Če str se začne z vodilnim 0x ali 0X, strtonum ()predpostavlja to str je šestnajstiško število.

pod ( r , s , t )

Tako kot gsub (), vendar se nadomesti le prvi ujemajoči podniz.

substr ( s , jaz , n )

Vrne največ n -karakter substrata s začenši z jaz . Če n je izpuščen, preostanek s se uporablja.

znižati( str )

Vrne kopijo niza str , z vsemi velikimi črkami v str prevedeni v njihove ustrezne primerjave z nižjimi primeri. Nesafetični znaki ostanejo nespremenjeni.

toupper ( str )

Vrne kopijo niza str , z vsemi malimi črkami v str prevedeni v njihove ustrezne primerke v višjih primerih. Nesafetični znaki ostanejo nespremenjeni.

Funkcije časa

Ker ena od primarnih rab AWK programov obdeluje dnevnike, ki vsebujejo podatke o časovnem žigu, gawk ponuja naslednje funkcije za pridobitev čas