Opettele Linux Command - gawk

Nimi

gawk - kuvion skannaus ja käsittelykieli

tiivistelmä

gawk [POSIX- tai GNU-tyyliasetukset] -f ohjelma-tiedosto [ - ] tiedosto ...
gawk [POSIX- tai GNU-tyyliasetukset] [ - ] ohjelma-tekstitiedosto ...

pgawk [ POSIX- tai GNU-tyyppiset vaihtoehdot] -f- ohjelma-tiedosto [ - ] tiedosto ...
pgawk [ POSIX- tai GNU-tyyppiset vaihtoehdot] [ - ] ohjelma-tekstitiedosto ...

Kuvaus

Gawk on GNU- projektin AWK-ohjelmointikielen toteutus. Se on POSIX 1003.2 Command Language And Utilities Standardin kielen määritelmä. Tämä versio perustuu puolestaan AWK-ohjelmointikielellä olevaan kuvaukseen, Aho, Kernighan ja Weinberger, ja niiden lisäominaisuudet ovat UNIX awk : n System V Release 4 -versiossa. Gawk tarjoaa myös uusia Bell Laboratories awk -laajennuksia ja useita GNU-spesifisiä laajennuksia.

Pgawk on gawkin profiilimuoto. Se on identtinen kaikin tavoin gawk: lle , paitsi että ohjelmat toimivat hitaammin ja se tuottaa automaattisesti suoritusprofiilin awkprof.out- tiedostossa, kun se on valmis. Katso alla oleva --profile -vaihtoehto.

Komentorivi koostuu vaihtoehdoista, joilla se häviää itsestään, AWK-ohjelmatekstistä (jos sitä ei toimiteta -f tai -file- asetuksilla) ja ARGC- ja ARGV- ennalta määritetyillä AWK-muuttujilla.

Optioformaatti

Gawk- vaihtoehdot voivat olla joko perinteisiä POSIX- kirjainvaihtoehtoja tai GNU-tyylisiä pitkä vaihtoehtoja. POSIX-asetukset alkavat yhdellä `` - '', kun taas pitkät asetukset alkavat `` - ''. Pitkä vaihtoehtoja on tarjolla sekä GNU-ominaisuuksille että POSIX-käyttöoikeuksille.

POSIX-standardin jälkeen gawk -spesifiset vaihtoehdot toimitetaan argumenttien avulla -W- vaihtoehtoon. Useita -W- vaihtoehtoja voidaan toimittaa Jokaisessa W- vaihtoehdossa on vastaava pitkä vaihtoehto, kuten alla on yksityiskohtainen. Pitkän vaihtoehdon argumentit joko liitetään vaihtoehdoksi merkki = ilman välilyöntejä, tai ne voidaan antaa seuraavassa komentorivin argumentissa. Pitkät vaihtoehdot voidaan lyhentää, kunhan lyhenne on ainutlaatuinen.

vaihtoehdot

Gawk hyväksyy seuraavat vaihtoehdot, jotka on lueteltu aakkosjärjestyksessä.

-F fs

--field-separator fs Käytä fs syöttökentän erotinta varten ( FS: n ennalta määritetyn muuttujan arvo).

-v var = val

- assign var = val Määritä arvo val muuttujalle var , ennen kuin ohjelman suorittaminen alkaa. Tällaiset muuttujat ovat AWK-ohjelman BEGIN- lohkossa.

-f ohjelmatiedosto

- tiedoston ohjelma-tiedosto Lue AWK-ohjelmalähde tiedosto- ohjelmatiedostosta ensimmäisen komentorivin argumentin sijaan. Useita -f (tai -file ) -vaihtoehtoja voidaan käyttää.

-mf NNN

-mr NNN Aseta eri muistirajat arvoon NNN . F- lippu asettaa kenttien maksimimäärän ja r- lippu asettaa suurimman rekisterin koon. Nämä kaksi lippua ja -m vaihtoehto ovat peräisin Bell Laboratories tutkimusversion UNIX awk . Gawk jättää ne huomiotta, koska gawkilla ei ole ennalta määritettyjä rajoja.

-W kompat

-W perinteinen

--compat

--Traditional Run yhteensopivassa tilassa. Yhteensopivuustilassa gawk käyttäytyy samanaikaisesti UNIX awk: n kanssa ; mikään GNU-spesifisistä laajennuksista ei tunnisteta. Yleisradion käyttö on edullisempaa kuin tämän vaihtoehdon muilla muodoilla. Katso lisätietoja alla olevasta GNU EXTENSIONS -sivustosta .

-W copyleft

-W tekijänoikeudet

--copyleft

--copyright Kirjoittaa GNU: n tekijänoikeustietosanoman lyhyt versio vakiotulosteesta ja poistua onnistuneesti.

-W-dump-muuttujat [ = tiedosto ]

--dump-muuttujat [ = tiedosto ] Tulosta lajiteltu luettelo globaaleista muuttujista, niiden tyypistä ja lopullisista arvoista tiedostoon . Jos tiedostoa ei anneta, gawk käyttää nykyiseen hakemistoon nimeltä awkvars.out- tiedostoa.

Listalla kaikista globaaleista muuttujista on hyvä tapa etsiä typografisia virheitä ohjelmissasi. Käytettäisiin myös tätä vaihtoehtoa, jos sinulla on suuri ohjelma, jossa on paljon toimintoja, ja haluat varmistaa, etteivät toiminnot johda tahattomasti globaaleihin muuttujiin, joiden tarkoitus on olla paikallisia. (Tämä on erityisen helppo virhe tehdä yksinkertaisilla muuttujan nimillä, kuten i , j ja niin edelleen.)

-W apua

-W käyttö

--auta

--usage Tulosta suhteellisen lyhyt yhteenveto käytettävissä olevista vaihtoehdoista vakiotulosteessa. ( GNU-koodausstandardien mukaan nämä vaihtoehdot aiheuttavat välittömän, onnistuneen poistumisen.)

-W lint [ = fataali ]

--lint [ = kohtalokas ] Antakaa varoituksia epäilyttävistä tai ei-siirrettävistä rakenteista muihin AWK-toteutuksiin. Vapaaehtoisella kuolemaan liittyvällä väkivallalla varoitus tulee olemaan kohtalokas virhe. Tämä voi olla jyrkkä, mutta sen käyttö varmasti edistää puhtaampien AWK-ohjelmien kehittämistä.

-W kyllä

- vanhoja Anna varoituksia rakenteista, jotka eivät ole siirrettävissä alkuperäiseen Unix awk -versioon.

-W gen-po

--gen-po Skannaa ja jäsentää AWK-ohjelmaa ja luo GNU .po -muotoisen tiedoston tavalliselle lähdölle, jossa on merkinnät kaikkiin ohjelmoitaviin merkkijonoihin. Ohjelmaa ei itse suoriteta. Katso lisätietoja GNU gettext -jakaumasta .po- tiedostoista.

-W ei desimaalitietoja

- ei-desimaalitieto Tunnista oktaali- ja heksadesimaaliset arvot syöttötietoihin. Käytä tätä vaihtoehtoa erittäin varovasti!

-W posix

--posix Tämä kytkeytyy yhteensopivaan tilaan, jossa on seuraavat lisärajoitukset:

*

\ x tyhjää sekvenssiä ei tunnisteta.

*

Vain tila ja välilehti toimivat kenttäerottimina, kun FS on asetettu yhteen tilaan, uusi rivi ei.

*

Et voi jatkaa rivejä sen jälkeen ? ja :.

*

Avainsanafunktion synonyymi func ei tunnisteta.

*

Operaattoreita ** ja ** = ei voida käyttää ^ ja ^ = sijaan .

*

Fflush () -toiminto ei ole käytettävissä.

-W profiili [ = prof_file ]

--profile [ = prof_file ] Lähetä profiilitiedot prof_fileen . Oletusarvo on awkprof.out . Kun suoritetaan gawk , profiili on vain "melko painettu" versio ohjelmasta. Käytettäessä pgawk- profiililla profiili sisältää kunkin ohjelman lausekkeen toteutumisnumerot vasempaan marginaaliin ja funktion puhelulaskut kullekin käyttäjän määrittelemälle toiminnolle.

-W-aikaväli

--re-interval Ota käyttöön aikavälien lausekkeet säännöllisessä lausekkeessa (katso säännölliset lausekkeet alla). Intervallin ilmaisuja ei perinteisesti ollut saatavilla AWK-kielellä. POSIX-standardi lisäsi ne, jotta awk ja egrep ovat yhdenmukaisia ​​toistensa kanssa. Kuitenkin niiden käyttö todennäköisesti rikkoo vanhoja AWK-ohjelmia, joten gawk vain antaa heille, jos heitä pyydetään tällä vaihtoehdolla tai kun --positio on määritetty.

-W lähde- ohjelma-teksti

--lähde- ohjelma-teksti Käytä ohjelman tekstiä AWK-ohjelmalähdekoodina. Tämä valinta mahdollistaa kirjastofunktioiden helpon sekoittumisen (jota käytetään -f ja --file- vaihtoehdoissa) komentorivillä syötetyn lähdekoodin kanssa. Se on tarkoitettu lähinnä keskikokoisille ja suurille AWK-ohjelmille, joita käytetään komentosarjoissa.

-W-versio

--version Tulostustekstitiedot tästä gawk- kopiosta vakiotulosteessa. Tämä on hyödyllistä lähinnä tietäen, onko nykyinen kopio gawk järjestelmästäsi ajan tasalla mitä tahansa Free Software Foundation jakaa. Tämä on hyödyllistä myös virheiden ilmoittamisessa. ( GNU-koodausstandardien mukaan nämä vaihtoehdot aiheuttavat välittömän, onnistuneen poistumisen.)

- Merkitse vaihtoehtojen loppu. Tämä on hyödyllistä, jotta AWK-ohjelmalle voitaisiin antaa lisäkysymyksiä aloittaa "- -". Tämä on lähinnä johdonmukaisuutta useimpien muiden POSIX-ohjelmien käyttämien argumenttien jäsentämissopimusten kanssa.

Yhteensopivuustilassa kaikki muut vaihtoehdot on merkitty virheellisiksi, mutta muuten niitä ei muuteta. Normaalikäytössä, kunhan ohjelmateksti on toimitettu, tuntemattomat vaihtoehdot välitetään AWK-ohjelmaan ARGV- ryhmässä käsittelyä varten. Tämä on erityisen hyödyllinen AWK-ohjelmien suorittamisessa `` #! '' Suoritettavan tulkkimekanismin kautta.

AWK-OHJELMAN TOTEUTUS

AWK-ohjelma koostuu kuvio-toiminnan lausekkeista ja valinnaisista toimintamäärittelyistä.

malli { toimintoselosteet }

toimintojen nimi ( parametriluettelo ) { statements }

Gawk lukee ensin ohjelmalähteen ohjelmatiedostoista, jos ne on määritetty, argumentteista - lähteeksi tai ensimmäisestä ei-option argumentista komentorivillä. -f- ja -lähdevalintoja voidaan käyttää useita kertoja komentorivillä. Gawk lukee ohjelman tekstin ikään kuin kaikki ohjelmatiedoston s ja komentorivin lähdekoodit olisi yh- distetty yhteen. Tämä on hyödyllistä AWK-toimintojen kirjastojen rakentamiselle ilman, että niitä pitäisi sisällyttää jokaiseen uusiin AWK-ohjelmaan, joka käyttää niitä. Se tarjoaa myös mahdollisuuden yhdistää kirjaston toimintoja komentoriviin.

Ympäristömuuttuja AWKPATH määrittää etsintäpolun, jota käytetään etsittäessä lähdetiedostoja, jotka on nimetty -f-asetuksella . Jos tätä muuttujaa ei ole, oletuspolku on ".: / Usr / local / share / awk" . (Todellinen hakemisto voi vaihdella, riippuen siitä, kuinka gawk on rakennettu ja asennettu.) Jos tiedostolle annettu nimi -f sisältää `` / '' merkin, ei reittihakua suoriteta.

Gawk suorittaa AWK-ohjelmat seuraavassa järjestyksessä. Ensin suoritetaan kaikki muuttujat, jotka määritetään -v- vaihtoehdon kautta. Seuraavaksi gawk kokoaa ohjelman sisäiseksi lomakkeeksi. Sitten gawk suorittaa koodin BEGIN- lohkoissa (jos sellainen on) ja jatkaa sitten lukemista ARGV- taulukossa nimettyjä tiedostoja. Jos komentorivillä ei ole nimettyjä tiedostoja, gawk lukee tavallisen syötteen.

Jos tiedostonimi komentorivillä on muotoa var = val, sitä käsitellään muuttujan osoituksena. Muuttujalle var annetaan arvo val . (Tämä tapahtuu, kun kaikki BEGIN- lohkot on suoritettu.) Komentorivin muuttujamääritys on eniten hyötyä arvojen dynaamisessa määrittämisessä muuttujiin, joilla AWK käyttää hallitsemaan, miten syöte rikkoo kentät ja tietueet. Se on myös hyödyllinen valvoa tilannetta, jos tarvitaan useita passteja yhden datatiedoston päälle.

Jos ARGV: n tietyn elementin arvo on tyhjä ( "" ), gawk ohittaa sen.

Jokaisen tulon tietueessa gawk testaa, vastaako se minkä tahansa kuvion AWK-ohjelmaan. Jokaiselle kuviolle, jonka tietue vastaa, siihen liittyvä toimenpide suoritetaan. Mallit testataan siinä järjestyksessä kuin ne esiintyvät ohjelmassa.

Lopuksi, kun kaikki syöte loppuu, gawk suorittaa koodin END- lohko (t) (jos sellainen on).

Muuttujat, tietueet ja kentät

AWK-muuttujat ovat dynaamisia; ne syntyvät, kun niitä käytetään ensin. Niiden arvot ovat joko kelluvia pisteitä tai merkkijonoja tai molempia riippuen siitä, miten niitä käytetään. AWK: llä on myös yksiulotteiset matriisit; monimuotoisia ryhmiä voidaan simuloida. Ohjelmassa on useita ennalta määritettyjä muuttujia; näitä kuvataan tarpeen mukaan ja tiivistetään alla.

asiakirjat

Normaalisti tietueet erotetaan uudella rivillä. Voit ohjata, miten tietueet erotetaan antamalla arvoja sisäänrakennetulle muuttujalle RS . Jos RS on yksittäinen merkki, merkki erottaa tietueet. Muutoin RS on säännöllinen lauseke. Teksti, joka vastaa tätä säännöllistä lauseketta, erottaa tietueen. Yhteensopivuustilassa kuitenkin vain sen merkkijonon ensimmäistä merkkiä käytetään tietueiden erottamiseen. Jos RS on asetettu nollarunaksi, niin tietueet erotetaan tyhjillä viivoilla. Kun RS on asetettu nollaruun, uusiline merkki toimii aina kenttäerottimena minkä tahansa arvon FS mukaan .

Fields

Kun jokainen tulotiedosto luetaan, gawk jakaa tietueen kenttiin käyttäen FS- muuttujan arvoa kentänerottimena. Jos FS on yksittäinen merkki, kentät erotetaan kyseisellä merkillä. Jos FS on null merkkijono, jokainen yksittäinen merkki tulee erilliseksi kentältä. Muussa tapauksessa FS: n odotetaan olevan täysi säännöllinen lauseke. Erityisessä tapauksessa, että FS on yksittäinen tila, kentät erotetaan välilyönnillä ja / tai välilehdillä ja / tai uudella rivillä. (Mutta katso keskustelu - positio alla). HUOMAUTUS: IGNORECASEn arvo (ks. Alla) vaikuttaa myös siihen, miten kentät jaetaan, kun FS on säännöllinen lauseke ja miten rekisterit erotetaan, kun RS on säännöllinen lauseke.

Jos FIELDWIDTHS- muuttuja on asetettu avaruuserotettuun numeroluetteloon , kullakin kentällä odotetaan olevan kiinteä leveys ja gawk jakaa tietueen määrätyllä leveydellä. FS: n arvoa ei huomioida. Uuden arvon määrittäminen FS: lle ohittaa FIELDWIDTHS: n käytön ja palauttaa oletusarvoisen käyttäytymisen.

Jokaisen syöttötietueen kenttään voidaan viitata sen sijainti, $ 1 , $ 2 ja niin edelleen. $ 0 on koko tietue. Kenttien ei tarvitse viitata vakioihin:

n = 5
tulosta $ n

tulostaa syötetyn tietueen viidennen kentän.

Muuttuja NF asetetaan syöttötietueen kenttien kokonaismäärään.

Viittaukset ei-oleviin kenttiin (eli kenttiin NF: n jälkeen ) tuottavat null-merkkijonoa. Ei-olemassa oleva kenttä (esim. $ (NF + 2) = 5 ) lisää NF: n arvoa, luo puuttuvat kentät null-merkkijonoineen niiden arvoksi ja aiheuttaa $ 0: n arvon uudelleenlaskennan kentät erotetaan OFS : n arvolla. Viittaukset negatiivisiin numeroitaviin kenttiin aiheuttavat kohtalokkaan virheen. NF: n arvon alentaminen aiheuttaa uusien arvojen menettämisen kenttien arvojen menettämisen ja arvon $ 0 rekonfiguraation arvon, kun kentät erotetaan OFS : n arvolla.

Arvon määrittäminen olemassa olevaan kenttään aiheuttaa koko tietueen uudelleenrakentamisen, kun viitataan 0: ssa . Samoin arvo määritetään arvoon 0, jolloin tietue tallentuu uudelleen ja luo kentille uusia arvoja.

Sisäänrakennetut muuttujat

Gawkin sisäänrakennetut muuttujat ovat:

argc

Komentorivin argumenttien määrä (ei sisällä vaihtoehtoja gawk tai ohjelmalähde).

ARGIND

Nykyisen tiedoston ARGV- indeksi, jota käsitellään.

argv

Komentorivin argumenttien sarja. Taulukko on indeksoitu 0: stä ARGC- 1: een. ARGV: n sisällön dynaaminen muutos voi hallita tiedostoihin käytettyjä tiedostoja.

BINMODE

Muissa kuin POSIX-järjestel- missä määritetään kaikkien binääri-tilan käyttö kaikkiin I / O-tiedostoihin. Numeron 1, 2 tai 3 numeeriset arvot määrittävät, että syöttötiedostot, tulostustiedostot tai kaikki tiedostot käyttävät binääristä I / O: ta. "R" : n tai "w": n merkkijonon arvot määrittävät, että syöttötiedostojen tai tulostustiedostojen tulee käyttää binääristä I / O: ta. "Rw": n tai "wr: n" merkkijonon arvot määrittävät, että kaikkien tiedostojen on käytettävä binääristä I / O: ta. Jokainen muu merkkijonoarvo käsitellään "rw" , mutta luo varoitusviestin.

CONVFMT

Oletusarvoisesti muunnosmuoto numeroille "% .6g" .

ENVIRON

Joukko, joka sisältää nykyisen ympäristön arvot. Joukko indeksoidaan ympäristömuuttujilla, jolloin jokainen elementti on kyseisen muuttujan arvo (esim. ENVIRON ["HOME"] voi olla / home / arnold ). Tämän taulukon muuttaminen ei vaikuta sellaisten ohjelmien näkemään ympäristöön, jotka gawk kutsuisi uudelleenohjauksen tai järjestelmän () -toiminnon kautta.

errno

Jos järjestelmävirhe sattuu tekemään uudelleenreititystä getlylle , readline getline-yhteyden aikana tai sulkemisen aikana () , niin ERRNO sisältää merkkijonon, joka kuvaa virheen. Arvoa voidaan kääntää muilla kuin englanninkielisillä alueilla.

FIELDWIDTHS

Valkotilasta erotettu luettelo kenttäleveydestä. Kun asetettu, gawk analysoi syötteen kiinteän leveyden kenttiin sen sijasta, että FS- muuttujan arvoa käytetään kenttäerottimena.

TIEDOSTON NIMI

Nykyisen syöttötiedoston nimi. Jos tiedostoa ei ole määritetty komentoriville, FILENAME- arvo on `` - ''. FILENAME on kuitenkin määrittelemätön BEGIN- lohkon sisällä (ellei setline ole määritetty).

FNR

Syötetyn tietueen numero nykyisessä syöttötiedostossa.

FS

Syöttökentän erotin, oletusarvoinen tila. Katso yllä olevat kentät .

ignorecase

Säätää kaikkien säännöllisten lausekkeiden ja merkkijono-operaatioiden herkkyyden. Jos IGNORECASE: lla on nollasta poikkeava arvo, sitten merkkijonon vertailut ja kuvion sovittaminen sääntöihin, kenttäjakaminen FS: n kanssa, RS: n erottelu, säännöllinen lausekkeiden sovitus yhteen ~ ja ! ~ Sekä gensub () , gsub () , indeksi () , match () , split () ja sub () -toiminnot eivät huomioi tapausta säännöllisinä ilmaisuoperaatioina. HUOMAUTUS: Array-alaindeksejä ei ole vaikuttanut, eikä asort () -toiminto.

Niinpä, jos IGNORECASE ei ole yhtä kuin nolla, / aB / vastaa kaikki merkkijonot "ab" , "aB" , "Ab" ja "AB" . Kuten kaikkien AWK-muuttujien kohdalla, IGNORECASE-aloitusarvo on nolla, joten kaikki säännölliset lausekkeet ja merkkijonooperaatiot ovat yleensä dynaamisia . Unixissa käytetään koko ISO 8859-1 Latin-1 -merkkisarjaa, kun jätetään huomiotta asia.

NUKKA

Tarjoaa dynaamisen ohjauksen - lintivaihtoehdon AWK-ohjelmasta. Kun totta, gawk tulostaa sateenvaroituksia. Jos se on väärä, se ei ole. Kun merkkijonoarvo on "kohtalokas" , sävyvaroitukset tulevat kuolemaan, aivan kuten - viite = kuolemaan . Jokainen muu todellinen arvo vain tulostaa varoitukset.

NF

Nykyisten syöttötietojen kenttien määrä.

NR

Tähän mennessä näkyvien syöttötietueiden kokonaismäärä.

OFMT

Oletuksena on numeroiden "% .6g" tulostusmuoto .

OFS

Lähtökentän erotin, oletusarvoinen tila.

ORS

Output record separator, oletusarvoisesti uusi rivin.

PROCINFO

Tämän taulukon elementit tarjoavat mahdollisuuden saada tietoja käynnissä olevasta AWK-ohjelmasta. Joissakin järjestelmissä ryhmässä voi olla elementtejä "ryhmä1" kautta "ryhmä n " joillekin n: lle , joka on prosessin lisäryhmien määrä. Käytä in operaattoria testata näitä elementtejä. Seuraavat tekijät ovat taatusti saatavilla:

PROCINFO [ "egid"]

getegid (2) järjestelmäpuhelun arvo.

PROCINFO [ "euid"]

geteuid (2) järjestelmäpuhelun arvo.

PROCINFO [ "FS"]

"FS", jos kenttäjakaminen FS: n kanssa on voimassa tai "FIELDWIDTHS", jos kenttäjakaminen on FIELDWIDTHS .

PROCINFO [ "GID"]

getgid (2) järjestelmäpuhelun arvo.

PROCINFO [ "pgrpid"]

nykyisen prosessin prosessiryhmän tunnus.

PROCINFO [ "pid"]

prosessin prosessin tunnus.

PROCINFO [ "ppid"]

nykyisen prosessin vanhemman prosessin tunnuksen.

PROCINFO [ "uid"]

getuid (2) järjestelmäpuhelun arvo.

RS

Tulotiedon erotin oletuksena uusi rivin.

RT

Tietueen päätelaite. Gawk asettaa RT syöttötekstiin, joka vastaa RS: n määrittelemää merkkiä tai säännöllistä lauseketta.

RSTART

Ensimmäisen merkin indeksi vastaa match () ; 0, jos ei ole ottelua. (Tämä tarkoittaa sitä, että merkkiindeksit alkavat yhdellä.)

RLENGTH

Merkkijonon pituus vastaa match () ; -1, jos ei ole ottelua.

SUBSEP

Merkki, jota käytetään useiden alikenttien erottamiseen taulukkoelementeissä, oletuksena "\ 034" .

TEKSTIALA

AWK-ohjelman tekstitiedosto; käytetään paikallisten käännösten löytämiseen ohjelman jonoille.

taulukot

Taulukot on merkitty hakasulkeilla ( [ ja ] ). Jos lauseke on ekspressioluettelo ( expr , expr ...), taulukon alaindeksi on merkkijono, joka koostuu jokaisen ilmentymän (merkkijono) arvon ketjusta , erotettuna SUBSEP- muuttujan arvolla. Tätä toimintoa käytetään simuloimaan moninkertaistettuja matriiseja. Esimerkiksi:

i = "A"; j = "B"; k = "C"
x [i, j, k] = "hello, maailma \ n"

määrittää merkkijonon "hello, world \ n" array x: n alkioon, joka on indeksoitu merkkijonolla "A \ 034B \ 034C" . Kaikki AWK: n ryhmät ovat assosiatiivisia, eli indeksoituja merkkijonoarvoilla.

Erityistä operaattoria voidaan käyttää if tai while- lausekkeessa, jotta näet, onko taulukossa indeksi, joka koostuu tietystä arvosta.

jos (val in array) tulosta array [val]

Jos taulukossa on useita indeksejä, käytä array (i, j) .

Konstruktia voidaan myös käyttää silmukan silmukan iteroimiseksi kaikkien array-elementtien yli.

Elementti voidaan poistaa taulukosta käyttämällä poistotoimintoa . Poista- lausetta voidaan myös käyttää koko ryhmän sisällön poistamiseen vain määrittämällä taulukon nimi ilman alaindeksiä.

Muuttuva kirjoittaminen ja muuntaminen

Muuttujat ja kentät voivat olla (floating point) numeroita tai merkkijonoja tai molempia. Kuinka muuttujan arvo tulkitaan riippuu sen kontekstista. Jos sitä käytetään numeerisessa lausekkeessa, sitä käsitellään numerona, jos sitä käytetään merkkijonona, sitä käsitellään merkkijonona.

Jotta pakottaisi muuttujan, jota hoidettaisiin numerona, lisää 0 siihen; pakottaa sen käsittelemään merkkijonona, ketjuttaa se nollarilla.

Kun merkkijono on muunnettava numeroiksi , konversio suoritetaan käyttäen strtod (3). Numero muunnetaan merkkijonoksi käyttäen CONVFMT: n arvoa sprintf (3): n muotoilujonoon, jossa muuttujan numeerinen arvo on argumentti. Vaikka AWK: n kaikki numerot ovat kelluvia, integraaliset arvot muunnetaan aina kokonaislukuina. Näin ollen annettu

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

muuttujalla b on merkkijonoarvo "12" eikä "12.00" .

Gawk tekee vertailuja seuraavasti: Jos kaksi muuttujaa on numeerinen, niitä verrataan numeerisesti. Jos jokin arvo on numeerinen ja toinen on merkkijonon arvo, joka on `` numeerinen merkkijono '', vertailut tehdään myös numeerisesti. Muussa tapauksessa numeerinen arvo muunnetaan merkkijonoksi ja suoritetaan merkkijonon vertailu. Kaksi merkkijonoa verrataan tietenkin merkkijonoina. Huomaa, että POSIX-standardi käyttää "numeerisen merkkijonon" käsitettä kaikkialla, myös merkkijonoihin. Tämä on kuitenkin selvästi väärä ja gawk ei tee tätä. (Onneksi tämä on vahvistettu standardin seuraavassa versiossa.)

Huomaa, että merkkijonon vakiot, kuten "57" , eivät ole numeerisia merkkijonoja, ne ovat merkkijonoja. Ajatus `` numeerisesta merkkijono '' koskee vain kenttiä, getline- syötettä, FILENAME , ARGV- elementtejä, ENVIRON- elementtejä ja osa (array ), jotka ovat luodun splitin () avulla, jotka ovat numeerisia merkkijonoja. Perusajatuksena on, että käyttäjälähtöä ja vain numeerista numeerista käyttäjämääriä pitäisi kohdella tällä tavoin.

Alusttamattomilla muuttujilla on numeerinen arvo 0 ja merkkijonon arvo "" (nolla tai tyhjä merkkijono).

Octal ja Hexadecimal Constants

Aloittamalla gawk- version 3.1 , voit käyttää AW-ohjelmalähdekoodissa C-tyylisiä oktaali- ja heksadesimaalivakiot. Esimerkiksi oktaaliarvo 011 on yhtä kuin desimaali 9 , ja heksadesimaaliarvo 0x11 on yhtä kuin desimaali 17.

String Constants

AWK: n vakiovakiot ovat kaksoissidosten ( " ) välissä olevia merkkisekvenssejä. Kieliryhmissä tunnistetaan tiettyjä poistumissekvenssejä , kuten C: ssä. Nämä ovat:

\\

Kirjaimellinen vastakkain.

\

"Hälytys" -merkki; yleensä ASCII BEL -merkki.

\ b

askelpalautinta.

\ f

lomake-syötteeseen.

\ n

uusi rivi.

\ r

kuljettaja palaa.

\ t

vaakasuora välilehti.

\ v

pystysuora välilehti.

\ x hex-numerot

Merkki, jonka heksadesimaalilukujen merkkijono edustaa \ x . Kuten ANSIC: ssä, kaikki seuraavat heksadesimaaliluvut katsotaan osaksi poistumissekvenssiä. (Tämän ominaisuuden pitäisi kertoa jotain komitean kielen suunnittelusta.) Esimerkiksi "\ x1B" on ASCIIESC (escape) -hahmo.

\ ddd

Merkki, jota edustavat 1-, 2- tai 3-numeroinen oktaalinumeroiden sekvenssi. Esimerkiksi "\ 033" on ASCII ESC (escape) -merkki.

\ c

Kirjaimellinen merkki c .

Poistumissekvenssejä voidaan käyttää myös säännöllisissä säännöllisissä lausekkeissa (esim. / [\ T \ f \ n \ r \ v] / vastaa välilyöntihahmoja).

Yhteensopivuustilanteessa oktaali- ja heksadesimaalisten poistosekvenssien merkkejä käsitellään kirjaimellisesti, kun niitä käytetään säännöllisissä lausekkeissa. Siten / a \ 52b / on / a \ * b / .

Mallit ja toimet

AWK on linja-suuntainen kieli. Kuvio tulee ensin ja sitten toiminta. Toimintakertomukset on liitetty { ja } . Joko kuvio puuttuu tai toiminto puuttuu, mutta tietenkään ei molempia. Jos kuvio puuttuu, toimenpide suoritetaan jokaisesta tietueesta. Tappava toimi vastaa

{ Tulosta }

joka tulostaa koko tietueen.

Kommentit alkavat `` # '' merkillä ja jatkuu rivin loppuun asti. Tyhjiä viivoja voidaan käyttää erottamaan lausunnot. Normaalisti lauseke päättyy uudella rivillä, mutta tämä ei tapahdu rivit, jotka päättyvät ``, '', { , ? ,,, && tai || . Linjojen päättyessä tai muuten heidän lausuntonsa jatkuvat automaattisesti seuraavalla rivillä. Muissa tapauksissa linjaa voidaan jatkaa lopettamalla se ", jolloin uusi rivi jätetään huomiotta.

Useita lausumia voidaan laittaa yhdelle riville erottamalla ne ``; ''. Tämä pätee molempien mallioikeusparin toimintaosan lausekkeisiin (tavalliseen tapaukseen) ja itse toimintamalleihin.

Kuviot

AWK-mallit voivat olla jokin seuraavista:

BEGIN END / säännöllinen lauseke / relaation ilmaisumalli && kuvion malli || kuvio kuvio ? kuvio : kuvio ( kuvio ) ! kuvio1 , kuvio2

BEGIN ja END ovat kahta erikoismallia, joita ei testata tuloa vastaan. Kaikkien BEGIN- mallien toimintaosat yhdistetään niin, että kaikki lausunnot on kirjoitettu yhteen BEGIN- lohkoon. Ne suoritetaan ennen kuin jokin tuloista luetaan. Samoin kaikki END- lohkot sulautuvat ja toteutetaan, kun kaikki syötteet ovat loppuneet (tai kun poistumisilmoitus suoritetaan). BEGIN- ja END- malleja ei voi yhdistää kuvio-ilmaisujen muihin kuvioihin. BEGIN- ja END- malleissa ei voi olla puuttuvia toimintaosia.

Jos / säännöllinen lauseke / -mallit, kyseinen lausuma suoritetaan kullekin syöttötasolle, joka vastaa säännöllistä lauseketta. Säännölliset lausekkeet ovat samat kuin egrepin (1) kohdat, ja ne on esitetty alla.

Yhteysilmaisu voi käyttää jommankumman alla määritellyistä operaattoreista toimintojen osassa. Nämä yleensä testaavat, vastaavatko tietyt kentät tiettyjä säännöllisiä lausekkeita.

&& , || , ja ! operaattorit ovat loogisia JA, looginen OR ja looginen NOT vastaavasti kuin C: ssä. Ne tekevät myös oikosulkuarvion, kuten myös C: ssä, ja niitä käytetään useampien primitiivisten kuvio-ilmaisujen yhdistämiseen. Kuten useimmilla kielillä, sulkeissa voidaan käyttää arvioinnin järjestystä.

A : operaattori on kuin sama operaattori C: ssä. Jos ensimmäinen kuvio on totta, testissä käytettävä malli on toinen kuvio, muuten se on kolmas. Vain toinen toisesta ja kolmannesta mallista arvioidaan.

Ilmentymän kuvio1 , kuvio2- muotoa kutsutaan aluekuvaksi . Se sopii kaikkiin syöttötietoihin, jotka alkavat rekisteristä, joka vastaa mallia1 , ja jatkaa siihen saakka kunnes levy, joka vastaa mallia2 , mukaan lukien. Se ei yhdy mihinkään muuhun kuvion ilmaisuun.

Säännölliset lausekkeet

Säännölliset lausekkeet ovat egrepin laajennettua tyyppiä. Ne koostuvat seuraavista merkkeistä:

C

vastaa ei-metakarakteria c .

\ c

vastaa kirjaimellista merkkiä c .

.

vastaa mitä tahansa merkkiä, joka sisältää uuden rivin.

^

vastaa merkkijonon alkua.

$

vastaa merkkijonon loppua.

[ abc ... ]

merkkilista, vastaa mitä tahansa merkkiä abc ....

[^ abc ... ]

negatiivinen merkkijono, vastaa mitä tahansa merkkiä paitsi abc ....

r1 | r2

vuorottelu: vastaa joko r1 tai r2 .

R1R2

concatenation: ottelut r1 ja sitten r2 .

r +

vastaa yhtä tai useampaa r : tä.

r *

vastaa nollaa tai enemmän r : tä.

r ?

vastaa nollaa tai yhtä r : tä.

( r )

ryhmittely: ottelut r .

r { n }

r { n ,}

r { n , m } Yksi tai kaksi numerot sisäpuolella olevat merkit merkitsevät aikavälin ilmaisua . Jos merkinnässä on yksi luku, edellinen säännöllinen lauseke r toistetaan n kertaa. Jos kaksi numeroa erotetaan pilkulla, r toistetaan n - m kertaa. Jos on yksi numero, jonka jälkeen pilkku, niin r toistetaan vähintään n kertaa.

Aikavälin lausekkeet ovat käytettävissä vain, jos komentorivillä on joko --posiitti tai -re-aikaväli .

\ y

vastaa tyhjä merkkijono joko sanan alussa tai lopussa.

\ B

täsmää sanan tyhjä merkkijono.

\ <

vastaa tyhjä merkkijono sanan alussa.

\>

vastaa tyhjää merkkijonoa sanan lopussa.

\ w

vastaa mitä tahansa sanaosaan perustuvaa luonnetta (kirjainta, numeroa tai alaviivaa).

\ W

vastaa mitä tahansa merkkiä, joka ei ole sana-ainesosa.

\ `

vastaa tyhjää merkkijonoa puskurin alussa (merkkijono).

\ '

vastaa puskurin lopussa olevaa tyhjää merkkijonoa.

Jousikvantteihin pätevät pakotusjaksot (katso alla) ovat myös voimassa säännöllisissä lausekkeissa.

Merkkiluokat ovat POSIX-standardin uusi ominaisuus. Merkkiluokka on erikoismerkki, jossa kuvataan merkkien luetteloita, joilla on tietty attribuutti, mutta joissa todelliset merkit voivat itse vaihdella maittain ja / tai merkistöstä merkkijonoon. Esimerkiksi aakkosten merkitys eroaa Yhdysvalloissa ja Ranskassa.

Merkkiluokka on voimassa vain säännöllisessä lausekkeessa merkkilistan suluissa. Merkkijoukot koostuvat [: , luokan avainsanasta ja :] . POSIX-standardin määrittelemät luokat ovat:

[: alnum:]

Alfanumeeriset merkit.

[: a:]

Aakkosmerkkejä.

[:tyhjä:]

Välilyönti- tai välilehdet.

[: cntrl:]

Ohjausmerkit.

[: numero:]

Numeeriset merkit.

[: graph:]

Hahmot, jotka ovat sekä tulosteita että näkyviä. (Tila on tulostettava, mutta ei näkyvissä, kun taas a on molemmat.)

[:alempi:]

Pienet kirjaimet.

[:Tulosta:]

Tulostettavia merkkejä (merkkejä, jotka eivät ole kontrollimerkkejä).

[: punct:]

Välimerkit (merkit, jotka eivät ole kirjaimia, numeroita, ohjaussymboleja tai välilyöntejä).

[: space:]

Välilyöntejä (kuten tilaa, välilehteä ja muotoilmoitusta, muutamia nimikkeitä).

[: ylempi:]

Suurikokoiset aakkoset.

[: xdigit:]

Merkit, jotka ovat heksadesimaalisia numeroita.

Esimerkiksi ennen POSIX-standardia aakkosnumeeristen merkkien vastaamiseksi sinun olisi pitänyt kirjoittaa / [A-Za-z0-9] / . Jos hahmoluettelossasi oli muita aakkosjärjestöjä, se ei olisi niiden mukaista, ja jos hahmosi joukko on erilainen kuin ASCII, tämä ei välttämättä vastaa ASCII-aakkosnumeerisia merkkejä. POSIX-merkkiluokkien avulla voit kirjoittaa / [[: alnum:]] / , ja tämä vastaa merkkijonoosi aakkos- ja numeerisia merkkejä.

Hahmoluetteloissa voi näkyä kaksi muuta erityistä sekvenssiä. Nämä koskevat ei-ASCII-merkkijoukkoja, joilla voi olla yksittäisiä symboleja (kutsutaan rinnakkaiselementteiksi ), joilla on useampi kuin yksi merkki sekä useita merkkejä, jotka vastaavat lajittelua tai lajittelua varten. (Esim. Ranskaksi, tavallinen "e" ja vakava painoinen e "ovat vastaavia.)

Järjestä symbolit

Kokoontumissymboli on monimerkkikokoelementti, joka on suljettu [. ja .] . Esimerkiksi jos ch on kokoava elementti, [[.ch.]] On säännöllinen lauseke, joka vastaa tätä kokoamiselementtiä, kun taas [ch] on säännöllinen lauseke, joka vastaa joko c tai h .

Vastaavuusluokat

Vastaavuusluokka on locale-spesifinen nimi, joka sisältää samanarvoisia merkkejä. Nimi on suljettu [= ja =] . Esimerkiksi nimeä e voidaan käyttää kaikkien "e", "` e "," "ja" `e" ilmaisemiseen. "Tässä tapauksessa [[= e =]] on säännöllinen lauseke, vastaa mitä tahansa e , e ' tai e` .

Nämä ominaisuudet ovat erittäin arvokkaita ei-englanninkielisessä paikassa. Kirjaston toiminnot, joita gawk käyttää säännöllisen lausekkeen sovittamiseen, tunnistavat tällä hetkellä vain POSIX-merkkiluokat; he eivät tunnista symbolien tai vastaavuusluokkien lajittelua.

\ Y , \ B , \ < , \> , \ w , \ W , \ ` ja \ ' operaattorit ovat spesifisiä gawk: lle ; ne ovat laajennuksia, jotka perustuvat GNU: n säännöllisen lausekirjaston kirjastoihin.

Eri komentorivivalitsimet ohjaavat kuinka gawk tulkitsee hahmoja säännöllisissä lausekkeissa.

Ei vaihtoehtoja

Oletusarvoisesti gawk tarjoaa kaikki POSIX-säännöllisiä lausekkeita ja edellä kuvattuja GNU-säännöllisiä ilmaisutoimintoja. Välilyöntiä ei kuitenkaan tueta.

--posix

Vain POSIX-säännöllisiä lausekkeita tuetaan, GNU-operaattorit eivät ole erityisiä. (Esim. \ W vastaa kirjaimellista w ). Intervallin ilmaisut ovat sallittuja.

--traditional

Perinteiset Unix- awk- säännölliset lausekkeet vastaavat. GNU-operaattorit eivät ole erityisiä, aikavälien ilmaisuja ei ole saatavana, eivätkä ne ole POSIX-merkkiluokkia ( [[: alnum:]] ja niin edelleen). Oktaali- ja heksadesimaalisissa poistumissekvensseissä kuvattuja merkkejä käsitellään kirjaimellisesti, vaikka ne edustavat säännöllisesti ilmaistuvia metakaraktereja.

--re-intervalli

Salli aikavälien ilmaukset säännöllisissä lausekkeissa, vaikka - perinteinen on annettu.

Toimet

Toimintoselosteet on sisustettu suluissa, { ja } . Toimintoselosteet koostuvat useimmilla kielillä esiintyvistä tavanomaisista toimeksianto-, ehdollis- ja looping-lauselmista. Käytettävät operaattorit, hallintalausekkeet ja käytettävissä olevat tulo- / lähtösanomat kuvioidaan sen jälkeen, kun ne ovat C.

operaattorit

AWK: n operaattorit vähentävät ensisijaisuuttaan

( ... )

ryhmittymä

$

Kentän viite.

++ -

Lisäys ja vähennys, sekä etuliite että postfix.

^

Exponentiation ( ** voidaan myös käyttää, ja ** = toimeksiantooperaattorille).

+ -!

Unary plus, unary minus ja looginen negaatio.

* /%

Kertominen, jako ja moduuli.

+ -

Yhteen-ja vähennyslasku.

tila

String ketjuttaminen.

<>

<=> =

! = == Säännölliset suhteelliset operaattorit.

~! ~

Säännöllinen lausekkeiden sovitus, negatiivinen ottelu. HUOMAUTUS: Älä käytä vakiota säännöllistä lauseketta ( / foo / ) ~ tai ! ~ Vasemmalla puolella. Käytä vain yhtä oikealla puolella. Ilmauksella / foo / ~ exp on sama merkitys kuin (($ 0 ~ / foo /) ~ exp ) . Tämä ei yleensä ole se, mikä oli tarkoitettu.

sisään

Array-jäsenyys.

&&

Looginen AND.

||

Looginen OR.

?:

C-ehdollinen lauseke. Tässä on muoto expr1 ? expr2 : expr3 . Jos ekspr1 on totta, lausekkeen arvo on expr2 , muuten se on expr3 . Vain yksi ekspr2 ja expr3 arvioidaan.

= + = - =

* = / =% = ^ = Tehtävä. Sekä absoluuttinen tehtävä ( var = arvo ) että operaattorin osoittaminen (muut muodot) tuetaan.

Valvontalausekkeet

Tarkastuslausumat ovat seuraavat:

jos ( condition ) lauseke [ muuten lausuma ] kun taas ( condition ) lausuma lausuma lausuntoa kun ( condition ) ( expr1 ; expr2 ; expr3 ) lausuma ( var in array ) statement break edelleen delete array [ indeksi ] delete array exit [ expression ] lausunnot }

I / O-lausunnot

Tulo / lähtö-lausunnot ovat seuraavat:

sulje ( tiedosto [ , miten ] )

Sulje tiedosto, putki tai rinnakkaisprosessi. Valinnaista, miten sitä tulisi käyttää vain sulkemalla kaksisuuntaisen putken toinen pää rinnakkaisprosessiin. Sen täytyy olla merkkijonoarvo joko "to" tai "from" .

getline

Aseta $ 0 seuraavasta syöttötiedostosta; asettaa NF , NR , FNR .

getline < tiedosto

Aseta $ 0 seuraavasta tiedostosta ; asettaa NF .

getline var

Aseta var seuraavasta syöttötiedostosta; asettaa NR , FNR .

getline var < tiedosto

Aseta var seuraavasta tiedostosta .

komento | getline [ var ]

Suorita komentokehote lähdöksi joko $ 0 tai var , kuten yllä.

komento | & getline [ var ]

Suorita komento rinnakkaisprosessina, joka tuottaa joko 0: n tai var: n , kuten yllä. Yhteisprosessit ovat gawk- laajennus.

Seuraava

Lopeta nykyisen syöttötietueen käsittely. Seuraava tulosignaali luetaan ja käsittely alkaa AWK-ohjelman ensimmäisellä kuvioinnilla. Jos sisääntulodatan loppu on saavutettu, mahdollinen END- lohko (t) suoritetaan.

nextfile

Lopeta nykyisen tulotiedoston käsittely. Seuraava tulosignaalin luku tulee seuraavasta syöttötiedostosta. FILENAME ja ARGIND päivitetään, FNR nollautuu arvoon 1 ja käsittely alkaa AWK-ohjelman ensimmäisellä kuvioinnilla. Jos sisääntulodatan loppu on saavutettu, mahdollinen END- lohko (t) suoritetaan.

Tulosta

Tulostaa nykyisen tietueen. Lähtötietue päättyy ORS- muuttujan arvoon.

tulosta expr-list

Tulostaa lausekkeita. Jokainen ilmentymä erotetaan OFS- muuttujan arvolla. Lähtötietue päättyy ORS- muuttujan arvoon.

tulosta expr-list > -tiedosto

Tulostaa lausekkeet tiedostoon . Jokainen ilmentymä erotetaan OFS- muuttujan arvolla. Lähtötietue päättyy ORS- muuttujan arvoon.

printf fmt, expr-list

Muotoile ja tulosta.

printf fmt, expr-list > -tiedosto

Muotoile ja tulosta tiedostoon .

järjestelmä ( cmd-line )

Suorita cmd-linjan komento ja palaa poistumistilaan. (Tämä ei välttämättä ole saatavilla muissa kuin POSIX-järjestelmissä.)

fflush ( [ tiedosto ] )

Huuhtele kaikki avoimen tulostustiedoston tai putkitiedostoon liittyvät puskurit. Jos tiedosto puuttuu, normaali lähdö huuhdellaan. Jos tiedosto on null merkkijono, kaikki avoimet ulostulotiedostot ja -putket puskuroivat.

Lisätoimituksen uudelleenohjaukset ovat sallittuja tulostus- ja printf-tiedostoille .

tulosta ... >> tiedosto

liittää tiedoston tiedoston .

tulosta ... | komento

kirjoittaa putkeen.

tulosta ... | ja komento

lähettää tietoja rinnakkaisprosessiin.

Getline- komento palauttaa tiedoston lopun 0 ja -1 virheen. Virheessä ERRNO sisältää ongelman kuvaavan merkkijonon.

HUOMAUTUS: Jos käytät putkea tai rinnakkaisprosessointia linjaan , tai tulosteesta tai printf : stä silmukan sisällä, sinun on käytettävä sulkemista () saadaksesi komennon uusia esimerkkejä. AWK ei automaattisesti sulje putkia tai rinnakkaisprosesseja, kun ne palauttavat EOF: n.

Printf-ilmoitus

AWF-versiot printf- lausekkeesta ja sprintf () -toiminnosta (katso alla) hyväksyvät seuraavat konversiospesifikaatiomuodot:

% C

ASCII-merkki. Jos % c: lle käytetty argumentti on numeerinen, sitä käsitellään merkkinä ja tulostetaan. Muuten argumentin oletetaan olevan merkkijono, ja sen merkkijonon ainoa ensimmäinen merkki tulostuu.

% d , % i

Desimaaliluku (kokonaisluku).

% e,% E

Muuttuvan pisteen numero muotoon [-] d.dddddde [+ -] dd . % E- muoto käyttää E: n sijaan e .

% f

Muuttuvan pisteen numero lomakkeesta [-] ddd.dddddd .

% g,% G

Käytä % e tai % f -muunnosta, kumpi on lyhyempi, ja merkityksetön nollia tukahdutetaan. % G- muoto käyttää % E sijaan % e .

% O

Unsigned oktaalinumero (myös kokonaisluku).

% u Ei allekirjoittamaton desimaalinumero (jälleen, kokonaisluku).

% s

Merkkijono.

% x,% X

Merkitsemätön heksadesimaaliluku (kokonaisluku). % X -muoto käyttää ABCDEF: n sijasta abcdef .

%%

Yksi % merkki; mitään argumenttia ei muuteta.

Valinnaiset lisäparametrit voivat olla %: n ja ohjauskirjeen välillä:

laskea $

Käytä laskenta -argumenttia tässä vaiheessa muotoilussa. Tätä kutsutaan paikkatiedostimeksi, ja se on tarkoitettu ensisijaisesti käytettäväksi muunnettujen merkkijonojen käännetyissä versioissa, ei AWK-ohjelman alkuperäisessä tekstissä. Se on gawk- laajennus.

-

Ilmaisun olisi oltava oikeutettu alan sisällä.

tila

Numeerisissa tuloksissa etuliite positiivisia arvoja, joissa on tilaa ja negatiivisia arvoja miinusmerkillä.

+

Ennen leveysmodifioijaa (ks. Alla) käytetyn plus-merkin ansiosta aina annetaan merkkejä numeerisille tuloksille, vaikka muotoiltava tieto olisi positiivinen. + Ohittaa tilamuutoksen.

#

Käytä "` vaihtoehtoista lomaketta '' tietyille kontrollikirjeille. % S: lle anna johtava nolla. % X : lle ja % X : lle toimittaa johtavan 0x tai 0X ei-tulosarvon. % E , % E ja % f , tulos sisältää aina desimaalipisteen. % G: lle ja % G : lle jäljelle jääneet nollat ​​eivät poistu tuloksesta.

0

Johtava 0 (nolla) toimii lippuna, joka ilmaisee, että lähtö on pehmustettu nollilla tilojen sijasta. Tämä koskee myös ei-numeerisia tulostusformaatteja. Tällä merkinnällä on vain vaikutus, kun kentän leveys on laajempi kuin tulostettava arvo.

leveys

Kenttä on pehmustettava tähän leveyteen. Kenttä on tavallisesti pehmustettu välilyönnillä. Jos 0- lippua on käytetty, se on pehmustettu nollilla.

. pREC

Numero, joka määrittää tulostuksen tarkkuuden. % E , % E ja % f -muodossa tämä määrittää desimaalipilkun oikealle puolelle halutut numerot. % G ja % G -muodot määrittävät merkittävien numeroiden enimmäismäärän. % D , % o , % i , % u , % x ja % X -muodot määrittävät tulostettavien numeroiden vähimmäismäärän. % S: lle määritetään merkkijonon enimmäismäärä, joka pitäisi tulostaa.

ANSI C printf () -rutiinien dynaamista leveyttä ja esiasetuksia tuetaan. A * leveys- tai ennaltaerittelyjen sijaan niiden arvot otetaan argumenttiluettelosta printf tai sprintf (): ksi . Jos haluat käyttää dynaamisen leveyden tai tarkkuuden sijainninmäärittelijää, anna lasku $, kun muotoilujono * on * . Esimerkiksi "% 3 $ * 2 $. * 1 $ s" .

Erityiset tiedostonimet

Kun teet I / O-uudelleenohjauksen joko tulosteesta tai printf- tiedostosta tiedostoon tai getline- tiedostosta, gawk tunnistaa tiettyjä erikoismerkkejä sisäisesti. Nämä tiedostonimet sallivat pääsyn avoimiin tiedostojen kuvaajiin, jotka on periytetty gawkin vanhemmuudesta (yleensä kuori). Näitä tiedostonimiä voidaan myös käyttää komentorivillä nimitiedostojen nimeämiseksi. Tiedostonimet ovat:

/ dev / stdin

Vakiotulo.

/ dev / stdout

Vakiotuloste.

/ dev / stderr

Vakiovirheen lähtö.

/ dev / fd / n

Tiedostoon, joka liittyy avoimeen tiedostojen kuvaajaan n .

Nämä ovat erityisen hyödyllisiä virheviesteissä. Esimerkiksi:

tulosta "Te puhalitte!" > "/ dev / stderr"

kun muuten sinun pitäisi käyttää

tulosta "Te puhalitte!" | "cat 1> & 2"

Seuraavat erityiset tiedostonimet voidaan käyttää | & yhteisprosessorioperaattorin kanssa TCP / IP-verkkoyhteyksien luomiseen.

/ inet / tcp / lport / rhost / rport

Tiedosto TCP / IP- yhteydelle paikallisessa portissa lport etäpalvelimeen rhost etäportrportissa . Käytä satamaan 0, jotta järjestelmä voi valita portin.

/ inet / udp / lport / rhost / rport

Vastaavasti, mutta käytä UDP / IP TCP / IP: n sijaan.

/ inet / raw / lport / rhost / rport

Varattu tulevaa käyttöä varten.

Muut erityiset tiedostonimet tarjoavat pääsyn tietoja käynnissä olevaan gawk- prosessiin. Nämä tiedostonimet ovat vanhentuneita. Käytä PROCINFO- ryhmää saadaksesi ne tiedot, joita he antavat. Tiedostonimet ovat:

/ dev / pid

Tämän tiedoston lukeminen palauttaa nykyisen prosessin prosessin tunnuksen desimaalilukuina ja lopetetaan uudella rivillä.

/ dev / ppid

Tämän tiedoston lukeminen palauttaa nykyisen prosessin vanhemman prosessin tunnuksen desimaaliluvuksi ja lopetetaan uudella rivillä.

/ dev / pgrpid

Tämän tiedoston lukeminen palauttaa nykyisen prosessin prosessiryhmän tunnuksen desimaaliluvuksi, joka päättyy uudella rivillä.

/ dev / käyttäjä

Tämän tiedoston lukeminen palauttaa yhden tietueen, joka päättyy uudella rivillä. Kentät erotetaan välilyönnillä. $ 1 on getuid (2) järjestelmäpuhelun arvo, $ 2 on geteuid (2) järjestelmäpuhelun arvo, $ 3 on getgid (2) järjestelmäpuhelun arvo ja $ 4 on getegid (2) järjestelmäpuhelu. Jos on ylimääräisiä kenttiä, ne ovat ryhmien palauttamia ryhmätietoja (2). Useita ryhmiä ei ehkä tueta kaikissa järjestelmissä.

Numeeriset toiminnot

AWK: lla on seuraavat sisäänrakennetut aritmeettiset toiminnot:

atan2 ( y , x )

Palauttaa y / x : n aakkosensorin radiaaneissa.

cos ( expr )

Palauttaa expr- kosinin, joka on radiaaneissa.

exp ( expr )

Eksponenttifunktio.

int ( expr )

Piilottaa kokonaislukuun.

log ( expr )

Luonnollinen logaritmitoiminto.

rand ()

Palauttaa satunnaisluku 0: n ja 1: n välillä.

sin ( expr )

Palauttaa ekspressin sinin, joka on radiaaneissa.

sqrt ( expr )

Neliöjuuritoiminto.

srand ( [ expr ] )

Käyttötarkoituksia käytetään satunnaislukugeneraattorin uutta siementä. Jos ei ole expr-arvoa , käytetään kellonaikaa. Paluuarvo on satunnaislukugeneraattorin edellinen siemen.

String-toiminnot

Gawkilla on seuraavat sisäänrakennetut merkkijonofunktiot:

asort ( s [ , d ] )

Palauttaa lähdeluettelon elementtien määrän. S: n sisältö lajitellaan gawk : n normaalien sääntöjen avulla vertailemalla arvoja ja s: n lajiteltujen arvojen indeksejä korvaten peräkkäisillä kokonaislukuilla alkaen 1: stä. Jos valinnainen kohdejoukko d on määritelty, s ensin kopioidaan d: ksi , ja sitten d lajitellaan, jolloin lähdesarjan indeksit ovat muuttumattomina.

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

Etsi tavoite merkkijono t säännöllisen lausekkeen r vastaavuuksille. Jos h on merkkijono, joka alkaa g: llä tai G: lla , korvaa kaikki r : n ottelut s: llä . Muuten h on numero, joka ilmaisee, mihin rivin r korvaa. Jos t ei toimiteta, sen sijasta käytetään 0 dollaria . Korvaavassa tekstissä s , sarja \ n , jossa n on luku 1-9, voidaan käyttää ilmaisemaan vain teksti, joka sopi yhteen n : nnen sulkeutuvan alikompression kanssa. Sarja \ 0 edustaa koko sovitettua tekstiä, samoin kuin merkki & . Toisin kuin sub () ja gsub () , muunnettu merkkijono palautetaan funktion tuloksena eikä alkuperäinen kohdejonoa muuteta.

gsub ( r , s [ , t ] )

Jokaiselle substringille, joka vastaa merkkijonossa t olevaa säännöllistä lauseketta r , korvataan merkkijonon s ja palauttaa substituutioiden määrä. Jos t ei toimiteta, käytä $ 0 . Korvaavan tekstin & korvataan tekstillä, joka todella oli sovitettu. Käytä kirjaimia & & . (Tämä on kirjoitettava nimellä "\\ &" , ks. GAWK: Tehokas AWK-ohjelmointi , joka koskee sub- , gsub () ja gensub () korvaavien tekstien täydellistä keskustelua.

indeksi ( s , t )

Palauttaa stringin t indeksin merkkijonossa s , tai 0, jos t ei ole läsnä. (Tämä tarkoittaa sitä, että merkkiindeksit alkavat yhdellä.)

pituus ( [ s ] )

Palauttaa merkkijonon pituuden tai 0: n pituuden jos s ei toimiteta.

ottelu ( s , r [ , a ] )

Palauttaa sijainnin s: ssä, jossa säännöllinen lauseke r esiintyy, tai 0, jos r ei ole läsnä ja asettaa arvot RSTART ja RLENGTH . Huomaa, että argumenttimäärä on sama kuin operaattorille: str ~ re . Jos array a on annettu, a poistetaan ja sitten elementit 1 - n täytetään s: n osilla, jotka vastaavat vastaavaa suluissa olevaa alikompressiota r: ssä . A: n 0'-osa sisältää s: n osan, joka vastaa koko säännöllistä lauseketta r .

split ( s , a [ , r ] )

Jakaa merkkijonon s tavallisen lausekkeen r joukkoon a ja palauttaa kenttien määrän. Jos r jätetään pois, käytetään sen sijaan FS . Joukko a poistetaan ensin. Jakaminen toimii edellä kuvatulla tavalla kenttäjakautuvasti.

sprintf ( fmt , expr-list )

Tulostaa expr- listin fmt: n mukaan ja palauttaa tuloksena olevan merkkijonon.

strtonum ( str )

Tarkistaa str ja palauttaa sen numeerisen arvon. Jos str alkaa johtavalla 0: lla , strtonum () olettaa, että str on oktaalinen numero. Jos str aloittaa johtavalla 0x tai 0X , strtonum () olettaa, että str on heksadesimaaliluku.

sub ( r , s [ , t ] )

Aivan kuten gsub () , mutta vain ensimmäinen vastaava substriini korvataan.

substr ( s , i [ , n ] )

Palauttaa s: n enimmillään n-merkkijoukon, joka alkaa i: stä . Jos n jätetään pois, käytetään loput s .

tolower ( str )

Palauttaa kopion merkkijonosta str , kun kaikki ylemmät kirjaimen merkit käännetään vastaaviin pienikokoisiin vastaaviin. Ei-aakkosnumeeriset merkit jäävät muuttumattomiksi.

toupper ( str )

Palauttaa kopion merkkijonosta str , kun kaikki pienet kirjaimet str: ssä on käännetty vastaaviin vastaaviin vastaaviin. Ei-aakkosnumeeriset merkit jäävät muuttumattomiksi.

Aikafunktiot

Koska yksi AWK-ohjelmien ensisijaisista käyttötavoista on aikaleimaustiedostoja sisältävien lokitiedostojen käsitteleminen, gawk tarjoaa seuraavat toiminnot aikaleimojen hankkimiseksi ja muotoilemiseksi.

mktime ( datespec )

Rurns datepec aikaleima sama muoto kuin palautetaan systime () . Datepec on merkkijono YYYY MM DD HH MM SS [DST] . Merkkijonon sisältö on kuusi tai seitsemän numeroa, jotka edustavat vastaavasti koko vuoden mukaan lukien vuosisata, kuukausi 1-12, kuukauden päivä 1 - 31, päivän tunti 0-23, minuutti 0 - 59 ja toinen 0-60, ja valinnainen kesäaika. Näiden numeroiden arvojen ei tarvitse olla määriteltyjä alueita; esimerkiksi tunnin -1 tarkoittaa 1 tunti ennen keskiyötä. Lähtökohtana on nolla gregoriaaninen kalenteri, jossa on vuosi 0, joka edeltää vuotta 1 ja vuotta -1 edeltää vuotta 0. Ajan oletetaan olevan paikallisella aikavyöhykkeellä. Jos kesäaika on positiivinen, ajankohdan oletetaan olevan kesäaika; jos nolla, aika oletetaan olevan vakioaika; ja jos negatiivinen (oletus), mktime () yrittää selvittää, onko kesäaika voimassa kyseisellä ajalla. Jos datepec ei sisällä tarpeeksi elementtiä tai jos tuloksena oleva aika on alueen ulkopuolella, mktime () palauttaa -1.

strftime ( [ muoto [ , aikaleima ]] )

Muotoilee aikaleima määritelmän mukaan muodossa. Aikaleiman on oltava samaa muotoa kuin systime () . Jos aikaleima puuttuu, käytetään nykyistä kellonaikaa. Jos formaatti puuttuu, käytetään päivämäärän (1) tuottoa vastaavaa oletusmuotoa. Katso ANSI C: n strftime () -toiminnon määrittelymuodot, jotka ovat taatusti saatavilla. Julkisen verkkotunnuksen strftime -versio (3) ja man-sivu, jolle se on mukana gawk: lla ; jos tätä versiota käytettiin rakentaa gawk , niin kaikki man-sivulla kuvatut tulokset ovat saatavilla gawk: lle.

systime ()

Palauttaa nykyisen kellonajan sekunteina sekunnin jälkeen (1970-01-01 00:00:00 UTC POSIX-järjestelmissä).

Bitien manipulointifunktiot

Alkaen gawk- version 3.1 kanssa, käytettävissä ovat seuraavat bittikäsittelytoiminnot . Ne toimivat muuntamalla kaksinkertaisen tarkkuuden liukuluku-arvot allekirjoittamattomiksi pitemmiksi kokonaislukuiksi, tekemällä operaatio ja tuloksen muuntamiseksi sitten liukuvalle. Toiminnot ovat:

ja ( v1 , v2 )

Palauta v1: n ja v2: n antamien arvojen bitit AND.

compl ( val )

Palauta bitin täydennysarvo val .

lshift ( val , count )

Palaa valin arvo, joka siirretään vasemmanpuoleisesti laskemisbittien avulla .

tai ( v1 , v2 )

Palauta bitin OR arvot v1 ja v2 .

rshift ( val , count )

Palauta val: n arvo, joka siirretään oikealle laskemisbittien avulla .

xor ( v1 , v2 )

Palauta v1: n ja v2: n antamien arvojen bittivirta XOR.

Kansainvälistymisfunktiot

Alkaen gawk- version 3.1 kanssa AWK-ohjelmassa voi käyttää seuraavia toimintoja kielten kääntämiseen ajon aikana. Katso täydelliset tiedot kohdasta GAWK: Tehokas AWK-ohjelmointi .

bindtextdomain ( hakemisto [ , toimialue ] )

Määrittää hakemiston, jossa gawk etsii .mo- tiedostoja, ellei niitä ole tai ei voida sijoittaa `` standardiin '' (esim. Testauksen aikana). Se palauttaa hakemiston, jossa verkkotunnus on `` sidottu. ''

Oletusalue on TEXTDOMAIN- arvon arvo. Jos hakemisto on null merkkijono ( "" ), niin sidtextdomain () palauttaa kyseisen siteen nykyisen sidonnan.

dcgettext ( merkkijono [ , verkkotunnus [ , luokka ]] )

Palauttaa merkkijonon tekstin verkkotunnukselle paikallisen luokan luokkaan . Verkkotunnuksen oletusarvo on TEXTDOMAINin nykyinen arvo. Luokan oletusarvo on "LC_MESSAGES" .

Jos annat luokan arvoksi, sen on oltava merkkijono, joka on yhtä kuin GAWK: ssa: Tehokas AWK-ohjelmointi . Sinun on myös toimitettava tekstidomeeri. Käytä TEXTDOMAIN, jos haluat käyttää nykyistä verkkotunnusta.

dcngettext (merkkijono1, merkkijono2 , numero [ , toimialue [ , kategoria ]] )

Palauttaa merkkijonon1 ja merkkijonon2 käännöksen numeron , jota käytetään tekstimuotoisen verkkotunnuksen paikalliseen luokkaan . Verkkotunnuksen oletusarvo on TEXTDOMAINin nykyinen arvo. Luokan oletusarvo on "LC_MESSAGES" .

Jos annat luokan arvoksi, sen on oltava merkkijono, joka on yhtä kuin GAWK: ssa: Tehokas AWK-ohjelmointi . Sinun on myös toimitettava tekstidomeeri. Käytä TEXTDOMAIN, jos haluat käyttää nykyistä verkkotunnusta.

USER-DEFINED FUNCTIONS

AWK: n toiminnot määritellään seuraavasti:

toimintojen nimi ( parametriluettelo ) { statements }

Toiminnot suoritetaan, kun niitä kutsutaan lausekkeiden sisällä joko kuvioissa tai toiminnoissa. Toimintopuhelussa annettuja todellisia parametreja käytetään havainnollistamaan funktiossa ilmoitettuja muodollisia parametreja. Muodot siirretään viittauksella, muut muuttujat ohitetaan arvolla.

Koska tehtävät eivät olleet alun perin osa AWK-kieltä, paikallisten muuttujien tarjonta on melko kömpelö. Ne on ilmoitettu lisäparametreiksi parametriluettelossa. Yleissopimus on erottaa paikalliset muuttujat todellisista parametreista lisäalueilla parametriluettelossa. Esimerkiksi:

funktio f (p, q, a, b) # a ja b ovat paikallisia {...} / abc / {...; f (1, 2); ...}

Toimintopuhelun vasemmanpuoleinen sulkumerkki vaaditaan välittömästi seuraamaan funktion nimeä ilman välitöntä valkoista tilaa. Näin vältetään syntaktinen epäselvyys ketjutoiminnan harjoittajan kanssa. Tätä rajoitusta ei sovelleta yllä lueteltuihin sisäänrakennettuihin toimintoihin.

Toiminnot voivat soittaa toisilleen ja ne voivat olla rekursiivisia. Paikallimuuttujina käytettävät funktiparametrit alustetaan nollarangaistukseksi ja nollanumerolla, kun funktio kutsuu.

Käytä paluuta expr palauttaaksesi arvon toiminnosta. Paluuarvo on määritetty, jos mitään arvoa ei ole annettu tai jos funktio palaa lopettamalla `` falling off ''.

Jos --lint on annettu, gawk varoittaa puheluista määrittelemättömiin toimintoihin parannusaikaan sen sijaan, että ajoaika olisi käytössä. Epättämättömän funktion kutsuminen suoritusaikana on kohtalokas virhe.

Sana func voidaan käyttää toiminnon sijasta.

UUDEN TOIMINTOJEN DYNAMIALLINEN LOAKKAUS

Kun käynnistät gawk- version 3.1, voit lisätä dynaamisesti uudet sisäänrakennetut toiminnot käynnissä olevaan gawk- tulkkiin. Täydelliset tiedot eivät kuulu tämän käsikirjan sivulle. katso GAWK: Tehokas AWK-ohjelmointi yksityiskohdista.

laajennus ( objekti , toiminto )

Dynaamisesti linkitä objektin nimetyn jaetun objektitiedoston ja kutsuta toimintoa kyseisessä objektissa alustamisen suorittamiseksi. Niiden tulee olla sekä merkkijonoja. Palauttaa toiminnon palauttaman arvon.

Tämä toiminto on esitetty ja dokumentoitu GAWK: ssä: Tehokas AWK-ohjelmointi , mutta kaikki tämä ominaisuus muuttuu todennäköisesti seuraavassa versiossa. Suosittelemme voimakkaasti, ettet käytä tätä ominaisuutta mihinkään, jota et halua uudestaan.

SIGNAALIT

pgawk hyväksyy kaksi signaalia. SIGUSR1 saa profiilitiedostoon ja toiminnalliseen puhelupinoon profiilitiedostoon, joka on joko awkprof.out tai mikä tahansa tiedosto on nimetty --profile- vaihtoehdolla. Sitten se jatkuu. SIGHUP aiheuttaa sen, että se tyhjentää profiilin ja toiminnon puhelupinoa ja poistuu sitten.

Esimerkit

Tulosta ja lajittele kaikkien käyttäjien käyttäjätunnukset: BEGIN {FS = ":"} {print $ 1 | "lajittele"} Laske rivit tiedostossa: {nlines ++} END {print nlines} Edita jokainen rivi numerolla tiedostossa: {print FNR, $ 0} Yhdistelmä ja rivinumero (teeman vaihtelu): {print NR, $ 0}

sisäistäminen

String-vakiot ovat kaksoisvihjeisiin sisältyviä merkkisarjoja. Ei-englanninkielisissä ympäristöissä on mahdollista merkitä AWK-ohjelmaan merkkijonoja, jotka edellyttävät kääntämistä luonnolliselle luonnolliselle kielelle. Tällaiset merkkijonot on merkitty AWK-ohjelmalla, jossa on alaraja (`_ ''). Esimerkiksi,

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

aina tulostaa hello, maailma . Mutta,

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

voisi tulostaa bonjour, monde Ranskassa.

On olemassa useita vaiheita paikallisen AWK-ohjelman tuottamiseen ja käyttöön.

1.

Lisää BEGIN- toiminto, jos haluat määrittää arvon TEXTDOMAIN- muuttujaan, jos haluat asettaa tekstin verkkotunnuksen ohjelmaan liittyvään nimeen.


BEGIN {TEXTDOMAIN = "myprog"}

Tämän ansiosta gawk löytää ohjelman mukana olleen .mo- tiedoston. Ilman tätä vaihetta, gawk käyttää viestejä teksti-verkkotunnuksen, joka todennäköisesti ei sisällä käännöksiä ohjelmalle.

2.

Merkitse kaikki merkkijonot, jotka on käännettävä johtavilla alareunoilla.

3.

Tarvittaessa käytä tarvittaessa ohjelman dcgettext () ja / tai bindtextdomain () -toimintoja.

4.

Suorita gawk --gen-po -f myprog.awk> myprog.po luoda .po- tiedosto ohjelmaan.

5.

Anna asianmukaiset käännökset ja rakenna ja asenna vastaava .mo- tiedosto.

Kansainvälistymisominaisuudet on kuvattu yksityiskohtaisesti GAWK: ssa: Tehokas AWK-ohjelmointi .

Posix-yhteensopivuus

Gawkin ensisijainen tavoite on yhteensopivuus POSIX-standardin kanssa sekä uusimman UNIX awk -version kanssa. Tätä varten gawk sisältää seuraavat käyttäjän näkyvät ominaisuudet, joita ei ole kuvattu AWK-kirjassa, mutta jotka ovat osa Bell Laboratoriesin awk- versiota ja ovat POSIX-standardissa.

Kirja kertoo, että komentorivin muuttujamääritys tapahtuu, kun awk muuten avaa argumentin tiedostona, joka on BEGIN- lohkon suorittamisen jälkeen. Aikaisemmissa toteutuksissa, kun tällainen tehtävä ilmestyi ennen tiedostojen nimeä, tehtävä tapahtui ennen BEGIN- lohkon suorittamista. Sovellukset riippuivat tästä "ominaisuudesta". "Kun awk muutettiin vastaamaan sen dokumentaatiota, -v -vaihtoehto muuttujien määrittämiseen ennen ohjelman suorittamista lisättiin sovelluksiin, jotka riippuivat vanhasta käyttäytymisestä. (Tämä ominaisuus sovittiin sekä Bell Laboratories että GNU-kehittäjien kanssa.)

-W- vaihtoehto toteuttaa erityisiä ominaisuuksia POSIX-standardista.

Argumenttien käsittelyä varten gawk käyttää erityistä vaihtoehtoa `` - '' signaalin lopettamiseksi. Yhteensopivuustilassa se varoittaa mutta muutoin jättää määrittelemättömiä vaihtoehtoja. Normaalikäytössä tällaiset argumentit siirretään AWK-ohjelmaan sen käsittelyyn.

AWK-kirja ei määritä srand (): n palautusarvoa. POSIX-standardilla on se palauttaa käyttämäsi siemenet, jotta satunnaislukusekvenssien seuranta voitaisiin sallia. Siksi srand () gawkissa myös palauttaa nykyisen siemenensä.

Muita uusia ominaisuuksia ovat: Useiden -f asetusten käyttö (MKS awk ); ENVIRON- taulukko; \ a , ja \ v poistumissekvenssit (tehty alun perin gawk: ssä ja syötetty takaisin Bell Laboratories -versioon); tolower () ja toupper () sisäänrakennetut toiminnot (Bell Laboratories -versiosta); ja ANSI C -muunnosmääritykset printf: ssä (tehty ensin Bell Laboratories -versiossa).

Historialliset ominaisuudet

Vanhoja AWK-toteutuksia on kaksi ominaisuutta, joita gawk tukee. Ensinnäkin on mahdollista kutsua pituus () sisäänrakennettu toiminto paitsi ilman argumentteja, mutta ilman sulkeja! Täten,

a = pituus # Pyhä Algol 60, Batman!

on sama kuin jompikumpi

a = pituus ()
a = pituus (0 €)

Tämä ominaisuus on merkitty POSIX-standardin `` vanhentuneeksi '' ja gawk antaa varoituksen sen käytöstä, jos --lint on määritetty komentoriville.

Toinen ominaisuus on joko jatko- tai tauko- lausekkeiden käyttö jonkin ajan kuluttua , silmukka tai silmukka. Perinteiset AWK-toteutukset ovat pitäneet tällaista käyttöä vastaavan seuraavaa lausetta. Gawk tukee tätä käyttöä, jos - perinteinen on määritelty.

GNU-laajennukset

Gawkilla on useita POSIX awk -laajennuksia. Niitä kuvataan tässä osiossa. Kaikki tässä kuvatut laajennukset voidaan poistaa käytöstä kutsumalla gawk - perinteisen vaihtoehdon.

Seuraavat gawk- ominaisuudet eivät ole käytettävissä POSIX awk: ssa .

*

Ei reittihakua suoritetaan tiedostoilla, jotka on nimetty -f- vaihtoehdolla. Siksi AWKPATH- ympäristömuuttuja ei ole erityinen.

*

\ X poistumisjärjestys. (Poistettu käytöstä --postimerkki ).

*

Fflush () -toiminto. (Poistettu käytöstä --postimerkki ).

*

Kyky jatkaa rivejä sen jälkeen ? ja :. (Poistettu käytöstä --postimerkki ).

*

Octal- ja heksadesimaalivakiot AWK-ohjelmissa.

*

ARGIND- , BINMODE- , ERRNO- , LINT- , RT- ja TEXTDOMAIN- muuttujat eivät ole erityisiä.

*

IGNORECASE- muuttuja ja sen sivuvaikutukset eivät ole käytettävissä.

*

FIELDWIDTHS- muuttuja ja kiinteän leveyden kenttäjakaminen.

*

PROCINFO- taulukko ei ole käytettävissä.

*

RS: n käyttö säännöllisenä ilmauksena.

*

I / O-uudelleenohjauksen käytettävissä olevia erityisiä tiedostonimiä ei tunnisteta.

*

| & Operaattori yhteisprosessien luomiseen.

*

Kyky jakaa yksittäiset merkit käyttämällä null-merkkijonoa FS: n arvona ja kolmanneksi argumentiksi jakamaan () .

*

Valinnainen toinen argumentti close () -toimintoon.

*

Valinnainen kolmas argumentti match () -toimintoon.

*

Kyky käyttää positionfiguurit printf: lla ja sprintf: llä () .

*

Poista taulukon poistaminen koko ryhmän sisällöstä.

*

Seuraavan tiedoston käyttö luopua nykyisen syöttötiedoston käsittelystä.

*

Bindoutdomain () , compl () , dcgettext () , gensub () , lshift () , mktime () tai () , rshift () , strftime () , strtonum () ja xor () toiminnot.

*

Paikoitettavat merkkijonot.

*

Uusien sisäänrakennettujen toimintojen lisääminen dynaamisesti laajennuksen () -toiminnon avulla.

AWK-kirja ei määritä close () -toiminnon paluuarvoa. Gawk 's close () palauttaa arvon fclose (3) tai pclose (3) sulkemalla tulostustiedoston tai putken. Se palauttaa prosessin poistumistilan sulkemalla syöttöputken. Paluuarvo on -1, jos nimettyä tiedostoa, putkea tai rinnakkaisprosessia ei avata uudelleenohjauksella.

Kun gawk kutsutaan --traditional vaihtoehto, jos fs argumentti- F vaihtoehto on `` t '', niin FS on asetettu välilehden merkki. Huomaa, että kirjoittaminen gawk -F \ t ... yksinkertaisesti aiheuttaa kuoren lainaavan `` t '', eikä siirrä `` \ t '' -F- vaihtoehtoon. Koska tämä on melko ruma erityistapaus, se ei ole oletuskäyttäytyminen. Tämä käyttäytyminen ei myöskään tapahdu, jos --posiitti on määritetty. Jos haluat todella saada välilehden merkin kenttäerottimena, on parasta käyttää yksittäisiä lainauksia: gawk -F '\ t' ....

Katso muut komennot : wait , lp , complete , execv , getfacl , ioctl , uniq , rmmod , pvcreate , rsh , unix2dos , cal , fs , cd , iwpriv , swapon , kuka , iwconfig , ifconfig , vgdisplay , avoin , lsmod , ntohs , mailq , tappaa , wtmp