Lernu la Linuksan Komandon - gawk

Nomo

gawk - mastruma skanado kaj prilaborado de lingvo

Sinopsis

gawk [POSIX aŭ GNU-stilo-opcioj] -f program-dosiero [ - ] dosiero ...
gawk [POSIX aŭ GNU-stilo-opcioj] [ - ] programo-teksto- dosiero ...

pgawk [POSIX aŭ GNU-stilo-opcioj] -f program-dosiero [ - ] dosiero ...
pgawk [POSIX aŭ GNU-stilo-opcioj] [ - ] programo-teksto- dosiero ...

Priskribo

Gawk estas la efektivigo de GNU- projekto de la AWK-programlingvo. Ĝi laŭigas la difinon de la lingvo en la POSIX 1003.2 Komandila Lingvo Kaj Utilecoj Norma. Ĉi tiu versio laŭvice baziĝas sur la priskribo en The AWK Programming Language , de Aho, Kernighan, kaj Weinberger, kun la aldonaj trajtoj en la sistemo V Release 4 versio de UNIX awk . Gawk ankaŭ provizas pli lastatempajn Bell-Laboratorojn kaj grandajn etendojn de GNU-specifaĵoj.

Pgawk estas la profila versio de gawk . Ĝi estas identa en ĉiu maniero al gawk , krom ke programoj kuras pli malrapide, kaj ĝi aŭtomate produktas ekzekutan profilon en la dosiero awkprof.out kiam farita. Vidu la --profile- opcion, sube.

La komandlinio konsistas el ebloj al gawk mem, la AWK-programo-teksto (se ĝi ne estas provizita per la -f--fileblaj opcioj), kaj valoroj esti disponeblaj en la ARGC kaj ARGV -difinitaj AWK-variabloj.

Opcio-Formato

Gawk- opcioj eble povas esti tradiciaj POSIX-unu leter-ebloj aŭ longaj elektoj de stilo GNU. POSIX-ebloj komenciĝas per sola `` - '', dum longaj ebloj komenciĝas per `` - ''. Longaj elektoj estas provizitaj por GNU-specifaj trajtoj kaj por POSIX-ordigitaj trajtoj.

Sekvante la normon POSIX, gawk -specificaj elektoj estas provizitaj per argumentoj al -W- opcio. Multoblaj -W- ebloj povas esti provizitaj Ĉiu -W- opcio havas respondan longan eblon, kiel estas detala sube. Argumentoj al longaj opcioj estas kunigitaj kun la opcio per = signo, sen interspacaj spacoj, aŭ ili povas esti provizitaj en la sekva komandlinia argumento. Longaj ebloj povas esti mallongigitaj, kondiĉe ke la mallongigo restas unika.

Opcioj

Gawk akceptas la jenajn eblojn, listigitaj alfabete.

-F fs

--field-separator fs Uzu fs por la eniga kampo apartigilo (la valoro de la FS antaŭdifinita variablo).

-v var = val

--assign var = val Asignu valoro val al la variablo var , antaŭ ol ekzekuto de la programo komenciĝas. Tiaj variabloj estas haveblaj al la BEGIN- bloko de programo AWK.

-f- programo-dosiero

--file programo-dosiero Legu la fonton de AWK-programo de la dosiero- programo-programo , anstataŭ de la unua komandlinia argumento. Multoblaj -f (aŭ --file ) opcioj povas esti uzataj.

-mf NNN

-mr NNN Fiksas diversajn memorajn limojn al la valoro NNN . La flago fiksas la maksimuman numeron de kampoj, kaj la r- flago agordas la maksimuman rekordon. Ĉi tiuj du flagoj kaj la -m- opcio estas de la Bell-Laboratories-esplora versio de UNIKSO . Ili estas ignoritaj de gawk , ĉar gawk havas neniujn antaŭdifinitajn limojn.

-W-kongruo

-W tradicia

- Komforto

- Eksterordinara Kuro en kongrua reĝimo. En kongrua reĝimo, gawk kondutas identike al UNIKSO awk ; neniu el la GNU-specifaj etendoj estas agnoskita. La uzo de - tradicia estas preferata laŭ la aliaj formoj de ĉi tiu opcio. Vidu GNU EXTENSIONS , sube, por pliaj informoj.

-W copyleft

-K-copyright

--copyleft

--copyright Printu la mallongan version de la GNU-kopirajta mesaĝo sur la norma eligo kaj eliri sukcese.

-W dump-variabloj [ = dosiero ]

--dump-variables [ = dosiero ] Presas ordigitan liston de tutmondaj variabloj, iliajn specojn kaj finajn valorojn por dosiero . Se neniu dosiero estas provizita, gawk uzas dosieron nomatan awkvars.out en la nuna dosierujo.

Havi liston de ĉiuj tutmondaj variabloj estas bona maniero serĉi tipografajn erarojn en viaj programoj. Vi ankaŭ uzus ĉi tiun eblon, se vi havas grandan programon kun multaj funkcioj, kaj vi volas certiĝi, ke viaj funkcioj ne malofte uzas tutmondajn variablojn, kiujn vi intencis esti loka. (Ĉi tio estas aparte facila eraro fari kun simplaj variabloj kiel i , j , kaj tiel plu.)

-Vi helpas

-W uzado

- helpo

--usage Presi relative mallongan resumon de la disponeblaj ebloj sur la norma eligo. (Per la GNU-Kodaj Normoj , ĉi tiuj elektoj kaŭzas tuja, sukcesa eliro.)

-W lint [ = fatala ]

--lint [ = fatala ] Provizu avizojn pri konstruoj, kiuj estas dubaj aŭ neporteblaj al aliaj implementoj de AWK. Kun laŭvola argumento pri fatalaj avizoj fariĝas fatalaj eraroj. Ĉi tio povas esti drasta, sed ĝia uzo certe kuraĝigos la disvolviĝon de pli klaraj AWK-programoj.

-Laĝa-malnova

--lint-old Provizu avizojn pri konstruoj, kiuj ne estas porteblaj al la originala versio de Unikso awk .

-W gen-po

--gen-po Scanu kaj analizu la programon AWK kaj generu dosieron de formato GNU .po sur norma eligo kun eniroj por ĉiuj lokaj ŝnuroj en la programo. La programo mem ne estas ekzekutita. Vidu la distribuon GNU gettext por pliaj informoj pri .po- dosieroj.

-W ne-dekuma-datumoj

--non-decimal-data Rekonu okajn kaj heksadekajn valorojn en enigo de datumoj. Uzu ĉi tiun opcion per granda singardo!

-Penikso

--posix Ĉi tio turniĝas al kongrua reĝimo, kun la sekvaj pliaj limigoj:

*

\ x eskapitaj sekvencoj ne estas agnoskitaj.

*

Nur spaco kaj pestaña agas kiel kampo-disigiloj kiam FS estas fiksita al sola spaco, nova linio ne.

*

Vi ne povas daŭrigi liniojn poste ? kaj :.

*

La sinonima funkcio por la ŝlosila funkcio ne estas agnoskita.

*

La telefonistoj ** kaj ** = ne povas esti uzataj anstataŭ ^ and ^ = .

*

La funkcio fflush () ne estas havebla.

-W profilo [ = prof_file ]

--profile [ = prof_file ] Sendu profilajn datumojn al prof_file . La defaŭlta estas awkprof.out . Kiam oni kuras kun gawk , la profilo estas nur '' sufiĉe presita '' versio de la programo. Kiam kuri kun pgawk , la profilo enhavas ekzekutojn de ĉiu deklaro en la programo en la maldekstra rando kaj funkcio nomitaj grafoj por ĉiu difinita funkcio de uzanto.

-W re-intervalo

--re-intervalo Ebligu la uzadon de intervalaj esprimoj en regula esprimado (vidi Regulaj Esprimoj , sube). Intervalaj esprimoj ne tradicie haveblas en la AWK-lingvo. La normo de POSIX aldonis ilin, por ke ili fariĝu senkuraĝaj . Tamen, ilia uzo verŝajne rompos malnovajn AWK-programojn, do gawk nur provizas al ili se ili petas ĉi tiun opcion, aŭ kiam --posix estas specifita.

-W fonta programo-teksto

--source program-text Uzu program-tekston kiel fontkodon de AWK-programo. Ĉi tiu opcio permesas la facilajn interŝanĝojn de bibliotektaj funkcioj (uzataj per la -f kaj --fileblaj opcioj) kun fonta kodo enigita en la komandlinio. Ĝi estas celita ĉefe por mezaj al grandaj AWK-programoj uzataj en ŝlosilkriptoj.

-W-versio

--version Printi informajn informojn por ĉi tiu aparta kopio de gawk sur la norma eligo. Ĉi tio utilas ĉefe por scii, ĉu la aktuala kopio de via sistemo estas ĝisdatigita pri kio ajn la Libera Programaro distribuas. Ĉi tio ankaŭ utilas kiam raportas cimojn. (Per la GNU-Kodaj Normoj , ĉi tiuj elektoj kaŭzas tuja, sukcesa eliro.)

- Signalo la fino de ebloj. Ĉi tio utilas por permesi pliajn argumentojn al la programo AWK mem por komenci per `` - ''. Ĉi tio estas plejparte por kohereco kun la argumento analizanta konvencion uzita de plej multaj aliaj POSI-programoj.

En kongrua reĝimo, iuj aliaj ebloj estas markitaj kiel nevalidaj, sed alie ili estas ignoritaj. En normala funkciado, kondiĉe ke programo de teksto estis provizita, nekonataj opcioj estas transitaj al la programo AWK en la aro de ARGV por prilaborado. Ĉi tio estas aparte utila por funkcii AWK-programojn per la '`#!' 'Ezecutable interpretisto.

AKK-PROGRAMA EKEKCIO

AWK-programo konsistas el sekvenco de ŝablono-agaj deklaroj kaj laŭvolaj funkcioj-difinoj.

ŝablono { agordaj agordoj }

funkcia nomo ( parametro listo ) { deklaroj }

Gawk unue legas la programfonto de la programo-dosiero (j) se ĝi specifas, de argumentoj al -source , aŭ de la unua ne-opcio-argumento sur la komandlinio. La -f kaj --source- ebloj povas esti uzataj multfoje en la komandlinio. Gawk legas la program-tekston kvazaŭ ĉiuj tekstaj tekstoj de la programo-dosiero kaj la komandlinioj estis concatenitaj kune. Ĉi tio estas utila por konstrui bibliotekojn de AWK-funkcioj, sen devi inkluzivi ilin en ĉiu nova AWK-programo kiu uzas ilin. Ĝi ankaŭ provizas la kapablon miksi bibliotekajn funkciojn kun komandliniaj programoj.

La medio-variablo AWKPATH specifas serĉan vojon por uzi trovinte fontajn dosierojn nomitan per la -f- opcio. Se ĉi tiu variablo ne ekzistas, la defaŭlta vojo estas ".: / Usr / local / share / awk" . (La rekta dosierujo povas varii, laŭ la gazeto konstruita kaj instalita.) Se dosiernomo donita al la -f- opcio enhavas `` / '' karakteron, neniu vojo serĉo estas farita.

Gawk ekzekutas programojn de AWK en la sekva ordo. Unue, ĉiuj variabloj faritaj per la -v- opcio estas plenumitaj. Poste, gawk kompilas la programon en internan formon. Tiam, gawk ekzekutas la kodon en la bloko (j) de BEGIN (se iu), kaj poste progresas por legi ĉiun dosieron nomitan en la ARGV- aro. Se ne ekzistas dosieroj nomitaj sur la komandlinio, gawk legas la norman enigon.

Se dosiernomo en la komandlinio havas la formon var = val ĝi estas traktita kiel variablo asigno. La variablo var estos atribuita la valora val . (Ĉi tio okazas post kiam iuj blokoj de BEGIN estis kuritaj.) Komandila variabligo estas plej utila por dinamike atribui valorojn al la variabloj AWK uzas por kontroli kiel enigo rompas en kampoj kaj registroj. Ĝi estas ankaŭ utila por kontroli staton se pluraj paŝoj estas bezonataj per unu sola dosiero.

Se la valoro de aparta elemento de ARGV estas malplena ( "" ), gawk saltas super ĝi.

Por ĉiu registro en la enigo, gawk- provoj por vidi ĉu ĝi kongruas kun iu ajn ŝablono en la programo AWK. Por ĉiu ŝablono, ke la rekordo matas, la asociita ago estas ekzekutita. La ŝablonoj estas provitaj laŭ la ordo, kiun ili okazas en la programo.

Fine, post kiam la enigo estas elĉerpita, gawk ekzekutas la kodon en la END- bloko (j) (se iu ajn).

Variabloj, Rekordoj, kaj Kampoj

AWK-variabloj estas dinamikaj; ili ekzistos kiam ili unue uzas. Iliaj valoroj estas aŭ flosantaj punktoj aŭ kordoj, aŭ ambaŭ, depende de kiel ili estas uzataj. AWK ankaŭ havas unu-dimensian arrays; arroj kun multaj dimensioj povas esti simulataj. Pluraj antaŭdifinitaj variabloj estas agorditaj kiel programo kuras; ĉi tiuj estos priskribitaj kiel bezonataj kaj resumitaj sube.

Rekordoj

Kutime, rekordoj estas disigitaj per novaj signoj. Vi povas kontroli kiel registroj estas apartigitaj per asignado de valoroj al la korpigita varianto RS . Se RS estas unuopa karaktero, tiu karaktero disigas registrojn. Alie, RS estas regula esprimo. Teksto en la enigo, kiu kongruas kun ĉi tiu regula esprimo, disigas la rekordon. Tamen, en kongrua reĝimo, nur la unua karaktero de ĝia ŝnura valoro estas uzata por disigi registrojn. Se RS estas fiksita al la nula kordo, tiam registroj estas apartigitaj per blankaj linioj. Kiam RS estas fiksita al la nula kordo, la nova linio ĉiam agas kiel kampo apartigilo, krom kia ajn valoro FS eble havas.

Kampoj

Ĉar ĉiu eniga registro estas legata, gawk dividas la rekordon en kampoj , uzante la valoron de la FS- variablon kiel la kampo-disigilo. Se FS estas ununura karaktero, kampoj estas apartigitaj de tiu karaktero. Se FS estas la nula kordo, tiam ĉiu individuo fariĝas aparta kampo. Alie, FS estas atendita esti plena regula esprimo. En la speciala kazo, ke FS estas ununura spaco, kampoj estas apartigitaj per kuroj de spacoj kaj / aŭ pestañas kaj / aŭ novaĵoj. (Sed vidu la diskuton de --posix , sube). NOTO: La valoro de IGNORECASE (vidu sube) ankaŭ influas kiel kampoj dividiĝas kiam FS estas regula esprimo, kaj kiel registroj estas disigitaj kiam RS estas regula esprimo.

Se la variablo de FIELDWIDTHS estas aligita al spaco apartigita listo de numeroj, ĉiu kampo estas atendita havi fiksitan larĝecon, kaj gawk disigas la rekordon per la specifaj larĝecoj. La valoro de FS estas ignorita. Asignante novan valoron al FS forĵetas la uzon de FIELDWIDTHS , kaj restarigas la defaŭltan konduton.

Ĉiu kampo en la eniga rekordo povas esti referencita de sia pozicio, $ 1 , $ 2 , kaj tiel plu. $ 0 estas la tuta rekordo. Kampoj ne bezonas referenciĝi per konstantaj:

n = 5
presi $ n

presas la kvinan kampon en la eniga rekordo.

La variablo NF estas aro al la tuta nombro da kampoj en la eniga rekordo.

Referencoj al ne ekzistantaj kampoj (te kampoj post $ NF ) produktas la nulajn kordojn. Tamen, atribui al kampo ne ekzistanta (ekz. $ (NF + 2) = 5 ) pliigas la valoron de NF , kreas iujn intermediajn kampojn kun nula kordo kiel ilia valoro, kaj kaŭzas la valoron de $ 0 por esti rekompencita, kun la kampoj apartigitaj per la valoro de OFS . Referencoj al negativaj numeritaj kampoj kaŭzas fatalan eraron. Decrementing NF kaŭzas la valorojn de kampoj preter la perdita nova valoro, kaj la valoro de $ 0 por esti rekompencita, kun la kampoj apartigitaj per la valoro de OFS .

Asigni valoron al ekzistanta kampo kaŭzas ke la tuta rekordo estu rekonstruita kiam $ 0 estas referencita. Simile, donante valoron al $ 0 kaŭzas ke la rekordo estu disigita, kreante novajn valorojn por la kampoj.

Variabloj enkonstruitaj

La variabloj de Gawk estas korpigitaj:

ARGC

La nombro de komandliniaj argumentoj (ne inkluzivas eblojn al gawk , aŭ la programfonto).

ARGIND

La indekso en ARGV de la nuna dosiero estas procesita.

ARGV

Tabelo de komandliniaj argumentoj. La tabelo estas indeksita de 0 al ARGC - 1. Dinamike ŝanĝi la enhavon de ARGV povas kontroli la dosierojn uzatajn por datumoj.

BINMODO

Sur sistemoj ne-POSIX, specifas uzon de '' binara '' por ĉiuj dosieroj I / O. Nombraj valoroj de 1, 2 aŭ 3, specifu, ke enigo dosieroj, elsendaj dosieroj aŭ ĉiuj dosieroj respektive uzu binaran I / O. Stringaj valoroj de "r""w" specifas, ke enigo dosieroj, aŭ eligo de dosieroj, respektive, devus uzi binaran I / O. Stringaj valoroj de "rw""wr" specifas, ke ĉiuj dosieroj devus uzi duan I / O. Ajna alia ŝnura valoro estas traktita kiel "rw" , sed generas avertan mesaĝon.

CONVFMT

La konverta formato por nombroj, "% .6g" , defaŭlte.

ENVIRON

Tabelo enhavanta la valorojn de la nuna medio. La tabelo estas indeksita per la mediaj variabloj, ĉiu elemento estas la valoro de tiu variablo (ekz., ENVIRON ["HOME"] povus esti / hejmo / arnold ). Ŝanĝi ĉi tiun tabelon ne influas la medion, viditan per programoj, kiuj okazas per redirektado aŭ la sistemo () funkcio.

ERRNO

Se sistemo de eraro okazas ĉu farante redirekto por getline , dum oni legas por kanono aŭ dum proksima () , tiam ERRNO enhavos ĉenon priskribante la eraron. La valoro estas submetata al tradukado en ne-anglaj lokoj.

FIELDWIDTHS

Blanka spaco disigita listo de kampovalidoj. Kiam aro, gawk analizas la enigon en kampoj de fiksita larĝo, anstataŭ uzi la valoron de la FS- variablon kiel la kampo-disigilo.

DOSIERNOMO

La nomo de la aktuala eniga dosiero. Se neniuj dosieroj estas specifitaj sur la komandlinio, la valoro de FILENAME estas `` - ''. Tamen, FILENAME nefinas ene de la bloko BEGIN (krom se agordita per kanono ).

FNR

La eniga rekordo nombro en la nuna eniga dosiero.

FS

La eniga kampo-disigilo, spaco defaŭlte. Vidu Kampoj , supre.

IGNORECASE

Kontrolas la kazon-sentivecon de ĉiuj regulaj esprimoj kaj kordoj. Se IGNORECASE havas valoron ne-nulo, tiam komparoj de ŝnuroj kaj kongruaj ŝablonoj en reguloj, kampo dividanta kun FS , rekordo disigi kun RS , regula esprimo kongruanta kun ~ kaj ! ~ , Kaj la gensub () , gsub () , indekso () , kongruaj () , split () , kaj sub () korpigitaj funkcioj ĉiuj ignoras kazon kiam faras regulajn esprimajn operaciojn. NOTO: Arriba subskribo ne estas tuŝita, nek estas la funkcio asort () .

Tiel, se IGNORECASE ne egalas al nulo, / aB / kongruas ĉiuj kordoj "ab" , "aB" , "Ab" kaj "AB" . Kiel kun ĉiuj AWK-variabloj, la komenca valoro de IGNORECASE estas nulo, do ĉiuj regulaj esprimoj kaj kordoj estas kutime kazaj. Sub Unikso, la plena ISO 8859-1 latin-1-karaktero estas uzata, kiam oni ignoras la aferon.

LINT

Provizas dinamikan kontrolon de la --lint- opcio de ene de programo AWK. Kiam vera, gawk presas lintajn avizojn. Kiam falsa, tio ne. Kiam oni atribuas la kordan valoron "fatala" , klaraj avizoj fariĝas fatalaj eraroj, ĝuste kiel --lint = fatala . Ajna alia vera valoro simple presas avertojn.

NF

La nombro da kampoj en la nuna eniga rekordo.

NR

La tuta nombro da enigaj rekordoj vidataj ĝis nun.

OFMT

La eliga formato por nombroj, "% .6g" , defaŭlte.

OFS

La eliga kampo apartigilo, spaco defaŭlte.

ORS

La eliga rekordo-disigilo, implicite nova linio.

PROCINFO

La elementoj de ĉi tiu tabelo provizas aliron al informoj pri la kuranta AWK-programo. En iuj sistemoj, povas esti elementoj en la tabelo, "grupo1" per "grupo n " por iuj n , kio estas la nombro de suplementaj grupoj, kiujn havas la procezo. Uzu la en telefonisto por provi ĉi tiujn elementojn. La jenaj elementoj garantias esti disponeblaj:

PROCINFO ["egid"]

La valoro de la getegid (2) Sistema voko.

PROCINFO ["malica"]

La valoro de la geteuid (2) Sistema voko.

PROCINFO ["FS"]

"FS" se kampo dividiĝas kun FS estas efektive, aŭ "FIELDWIDTHS" se kampo dividanta kun FIELDWIDTHS estas efektive.

PROCINFO ["gid"]

la valoro de la getgid (2) sistemo vokas.

PROCINFO ["pgrpid"]

la proceza grupo ID de la nuna procezo.

PROCINFO ["pid"]

la proceza ID de la nuna procezo.

PROCINFO ["ppid"]

la gepatra ID-ID de la nuna procezo.

PROCINFO ["uid"]

La valoro de la getuid (2) Sistema voko.

RS

La eniga rekorda disigilo, implicite nova linio.

RT

La registra finaĵo. Gawk metas RT al la eniga teksto, kiu kongruas kun la karaktero aŭ regula esprimo specifita de RS .

RSTART

La indekso de la unua karaktero egalita per matĉo () ; 0 se neniu matĉo. (Ĉi tio implicas, ke signoj de karaktero komenciĝas ĉe unu.)

RELEN

La longo de la kordo egalis per matĉo () ; -1 se ne estas matĉo.

SUBSEP

La karaktero uzata por disigi multnombrajn subskripciojn en tabelo elementoj, defaŭlte "\ 034" .

TEXTDOMAIN

Teksto de la programo AWK; Uzis trovi la lokajn tradukojn por la kordoj de la programo.

Arrays

Arrays estas subskribitaj kun esprimo inter kvadrataj krampoj ( [ kaj ] ). Se la esprimo estas lerta de esprimo ( expr , expr ...) tiam la tabelo-subskribo estas ĉeno konsistanta el la konkatenigo de la (ĉeno) valoro de ĉiu esprimo, apartigita per la valoro de la variablo de SUBSEP . Ĉi tiu facileco estas uzita por simuli multoblajn dimensiojn. Ekzemple:

i = "Al"; j = "B"; k = "C"
x [i, j, k] = "saluton, mondon \ n"

atribuas la ĉenon "saluton, mondon \ n" al la elemento de la tabelo x kiu estas indeksita per la kordo "A \ 034B \ 034C" . Ĉiuj tabeloj en AWK estas asocieca, te indikitaj per kordoj.

La speciala telefonisto povas esti uzata en sedum deklaro por vidi ĉu tabelo havas indekson kun aparta valoro.

se (val en tabelo) presita tabelo [val]

Se la tabelo havas multoblajn subskripciojn, uzu (i, j) en tabelo .

La konstruado povas esti uzata ankaŭ por buklo por ripeti ĉiujn elementojn de tabelo.

Elemento povas esti forigita de tabelo per la forigo . La foriga deklaro ankaŭ povas esti uzata por forviŝi la tutan enhavon de tabelo, simple specifante la tablan nomon sen subskribo.

Variablo Tipado kaj Konvertiĝo

Variabloj kaj kampoj povas esti (flosantaj punktoj) nombroj, aŭ kordoj, aŭ ambaŭ. Kiel la valoro de variablo estas interpretita dependas de ĝia kunteksto. Se uzata en nombra esprimo, ĝi estos traktita kiel nombro, se ĝi estas uzata kiel ĉeno, ĝi estos traktita kiel ĉeno.

Forigi variablon esti traktita kiel nombro, aldonu 0 al ĝi; por devigi ĝin esti traktita kiel ĉeno, koincidu ĝin per la nula ĉeno.

Kiam ŝnuro devas esti konvertita al nombro, la konvertiĝo plenumas per strtod (3). Numero estas konvertita al ĉeno per la valoro de CONVFMT kiel formato-string por sprintf (3), kun la nombra valoro de la variablo kiel la argumento. Tamen, kvankam ĉiuj nombroj en AWK estas flosantaj punktoj, integraj valoroj ĉiam konvertiĝas kiel entjeroj. Tiel donita

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

la variablo b havas kordan valoron de "12" kaj ne "12.00" .

Gawk faras komparojn kiel sekvas: Se du variabloj estas nombraj, ili estas komparitaj nombre. Se unu valoro estas nombra kaj la alia havas ĉenan valoron, kiu estas '' nombra kordo '', tiam komparoj ankaŭ fariĝas nombre. Alie, la nombra valoro estas konvertita al ĉeno kaj ĉeno kompara estas farita. Du kordoj estas komparitaj, kompreneble, kiel ŝnuroj. Notu, ke la normo POSIX aplikas la koncepton de '' nombra ĉeno '' ĉie, eĉ al ĉenaj konstantaj. Tamen, ĉi tio estas klare malĝusta, kaj gawk ne faras tion. (Feliĉe, ĉi tio estas fiksita en la sekva versio de la normo.)

Rimarku, ke konstantaj kordoj, kiel "57" , ne estas nombraj ŝnuroj, ili estas ĉenaj konstantaj. La ideo de '' nombra kordo '' nur aplikas al kampoj, getline enigo, FILENAME , ARGV- elementoj, ENVIRON- elementoj kaj elementoj de tabelo kreita de split (), kiuj estas nombraj ŝnuroj. La baza ideo estas, ke uzanto enigas , kaj nur uzanto enigo, kiu aspektas nombra, devus esti traktita tiel.

Nevaloraj variabloj havas la nombran valoron 0 kaj la ŝnura valoro "" (la nula aŭ malplena, kordo).

Konstantoj Octales kaj Hexadektemaj

Komencante kun versio 3.1 de gawk, vi povas uzi C-stilo okajn kaj heksadektajn konstantojn en via AWK-programo fonta kodo. Ekzemple, la valoro octal 011 estas egala al decimala 9 , kaj la heksadeka valoro 0x11 estas egala al decimala 17.

Konstantaj Stringoj

La konstantaj stringoj en AWK estas sekvencoj de karakteroj ligitaj inter duoblaj citaĵoj ( " ). En la kordoj, iuj sekaj eskapoj estas agnoskitaj, kiel en C. Ĉi tiuj estas:

\\

Laŭvorta backslash.

\ a

La '' garde '' karaktero; kutime la ASCII BEL-karaktero.

\ b

malantaŭa spaco.

\ f

formo-manĝado.

\ n

nova linio.

\ r

kaleŝa reveno.

\ t

horizontala langeto.

\ v

vertikala pestaña

\ x heksaj ciferoj

La karaktero reprezentita per la kordo de heksadektaj ciferoj sekvanta la \ x . Kiel en SSAJ, ĉiuj sekvaj heksadektaj ciferoj estas konsiderata parto de la sekvenca sekvenco. (Ĉi tiu funkcio devus diri al ni ion pri lingva dezajno fare de komitato.) Eg, "\ x1B" estas la ASCIIESC (ellasilo) karaktero.

\ ddd

La karaktero reprezentita per la 1-, 2-, aŭ 3-cifera sekvenco de okaj ciferoj. Ekzemple, "\ 033" estas la ASCII ESC (ellasilo) karaktero.

\ c

La laŭvorta karaktero c .

La sekvencoj de ellasilo ankaŭ povas esti uzataj en konstantaj regulaj esprimoj (ekz., / [\ T \ f \ n \ r \ v] / kongruas spaco-karakteroj).

En kongrueco, la signoj reprezentitaj per octalaj kaj heksadekaj eskapitaj sekvencoj estas traktataj laŭvorte kiam uzataj en regulaj konstantaj esprimoj. Tiel, / a \ 52b / estas ekvivalenta al / a \ * b / .

Ŝablonoj kaj Agoj

AWK estas linio-orientita lingvo. La ŝablono venas unue, kaj tiam la ago. Agoj-deklaroj estas enfermitaj en { kaj } . Aŭ la ŝablono eble mankas, aŭ la ago eble mankas, sed kompreneble ne ambaŭ. Se la mastro mankas, la ago estas ekzekutita por ĉiu ununura rekordo de enigo. Malaperita ago samvaloras al

{print}

kiu presas la tutan rekordon.

Komentoj komencas kun la '`#' 'karaktero, kaj daŭri ĝis la fino de la linio. Blankaj linioj povas esti uzataj por disigi frazojn. Kutime, deklaro finiĝas per nova linio, tamen, ĉi tio ne okazas por linioj finantaj en ``, '', { , ? , : , && , aŭ || . Linioj finantaj en farialian ankaŭ havas siajn deklarojn aŭtomate daŭrigitaj laŭ la sekva linio. En aliaj kazoj, linio povas daŭrigi finante ĝin per ', en kies kazo la nova linio estos ignorita.

Multoblaj deklaroj povas esti metitaj sur unu linio apartigante ilin per ``; ''. Ĉi tio aplikas al ambaŭ la deklaroj ene de la ago parto de ŝablono-ago-paro (la kutima kazo), kaj al la propraj deklaroj de ŝablono.

Ŝablonoj

AWK-ŝablonoj povas esti unu el la sekvaj:

BEGIN FIN / regula esprimo / rilata esprimo ŝablono && ŝablono- ŝablono || mastra ŝablono ? ŝablono : ŝablono ( ŝablono ) ! mastro ŝablono1 , ŝablono2

BEGINO kaj FIN estas du specialaj specoj de ŝablonoj, kiuj ne estas provitaj kontraŭ la enigo. La agaj partoj de ĉiuj BEGIN- ŝablonoj estas kunfanditaj kvazaŭ ĉiuj deklaroj estis skribitaj en sola BEGIN- bloko. Ili estas ekzekutitaj antaŭ ol legi iujn el la enigo. Simile, ĉiuj END- blokoj estas kunfanditaj, kaj ekzekutitaj kiam la tuta enigo estas elĉerpita (aŭ kiam eliro de ekspozicio). BEGINOJ kaj FIN- ŝablonoj ne povas esti kombinitaj kun aliaj ŝablonoj en ŝablono-esprimoj. BEGINOJ kaj FINaj ŝablonoj ne povas havi mankajn partojn.

Por / regula esprimo / ŝablonoj, la asociita deklaro estas ekzekutita por ĉiu eniga rekordo kiu kongruas kun la regula esprimo. Regulaj esprimoj estas samaj kiel tiuj en egrep (1), kaj estas resumitaj sube.

Rilata esprimo povas uzi iujn el la operatoroj difinitaj sube en la sekcio de agoj. Ĉi tiuj ĝenerale provas ĉu iuj kampoj kunigas iujn regulajn esprimojn.

La && , || , kaj ! telefonistoj estas logikaj AND, logikaj OR, kaj logikaj NE, respektive, kiel en C. Ili faras mallong-cirkvitan taksadon, ankaŭ kiel en C, kaj estas uzataj por kombini pli primitivajn ŝajnajn esprimojn. Kiel en plej multaj lingvoj, krampoj povas esti uzataj por ŝanĝi la ordo de evaluado.

La ?: Operatoro estas kiel la sama operatoro en C. Se la unua ŝablono estas vera, tiam la ŝablono uzata por testado estas la dua ŝablono, alie ĝi estas la tria. Nur unu el la dua kaj tria ŝablonoj estas taksata.

La ŝablono1 , modelo2 de esprimo estas nomata gamo- ŝablono . Ĝi kongruas ĉiujn enigajn rekordojn komencante per rekordo, kiu kongruas kun mastro 1 , kaj daŭras ĝis rekordo, kiu kongruas kun ŝablono2 , inkluzive. Ĝi ne kombinas kun iu alia speco de ŝablono-esprimo.

Regulaj Esprimoj

Regulaj esprimoj estas la etendita speco en egrep . Ili estas formitaj de karakteroj kiel sekvas:

c

kongruas kun la ne-metacharactero c .

\ c

kongruas kun la laŭvorta karaktero c .

.

kongruas kun iu ajn karaktero inkluzive de nova linio.

^

kongruas kun la komenco de ĉeno.

$

kongruas kun la fino de ĉeno.

[ abc ... ]

karaktero listo, kongruas kun iu ajn el la karakteroj abc ....

[^ abc ... ]

negatas lertaj karakteroj, kongruas kun iu ajn karaktero krom abc ....

r1 | r2

alternado: kongruas ĉu r1r2 .

r1r2

konkateniĝo: matĉoj r1 , kaj tiam r2 .

r +

kongruas unu aŭ pli r 's.

r *

matĉoj nulo aŭ pli r 's.

r ?

matĉoj nulo aŭ unu r 's.

( r )

grupado: matĉoj r .

r { n }

r { n ,}

r { n , m } Unu aŭ du nombroj ene de krampoj indikas intervalan esprimon . Se estas unu nombro en la krampoj, la antaŭa regula regula esprimo ripetas n fojojn. Se estas du nombroj disigitaj per komo, r estas ripetita n al m fojoj. Se estas unu nombro sekvata per komo, tiam r ripetu almenaŭ n fojojn.

Intervalaj esprimoj estas nur haveblaj se ĉu --posix- intertempo estas specifita sur la komandlinio.

\ y

kongruas kun la malplena ĉeno ĉe la komenco aŭ la fino de vorto.

\ B

kongruas kun la malplena kordo ene de vorto.

\ <

kongruas kun la malplena ĉeno ĉe la komenco de vorto.

\>

kongruas kun la malplena ĉeno ĉe la fino de vorto.

\ w

kongruas kun iu vorto-konstanta karaktero (litero, cifereco aŭ subbazaĵo).

\ W

kongruas kun iu ajn karaktero, kiu ne estas vorto-constituyente.

\ `

kongruas kun la malplena ĉeno ĉe la komenco de bufro (ĉeno).

\ '

kongruas kun la malplena ĉeno ĉe la fino de bufro.

La sekvencaj sekvencoj validas en ĉenaj konstantoj (vidu sube) ankaŭ estas validaj en regulaj esprimoj.

Karakteroj de klaso estas nova funkcio enmetita en la normo POSIX. Karaktero de klaso estas speciala notacio por priskribi listojn de karakteroj, kiuj havas specifan atributon, sed kie la realaj signoj mem povas varii de lando al lando kaj / aŭ de karaktero aro al karaktero. Ekzemple, la nocio de kio estas alfabeta karaktero diferencas en Usono kaj Francio.

Karaktero de klaso nur validas en regula esprimo ene de la krampoj de karaktero-listo. Karakteroj de karaktero konsistas el [: , ŝlosilvorto denota la klaso, kaj :] . La karakteroj klasoj difinitaj de la normo POSIX estas:

[: alnum:]

Alfaŭraj karakteroj.

[: alfa:]

Alfabeta karakteroj.

[:malplenan:]

Spacaj aŭ langetoj.

[: cntrl:]

Kontroli karakterojn.

[: cifereco:]

Nombraj signoj.

[: grafikaĵo:]

Karakteroj, kiuj estas ambaŭ printablaj kaj videblaj. (Spaco estas printabla, sed ne videbla, dum unu estas ambaŭ).

[: pli malalta:]

Malsupra-kazaj alfabeta karakteroj.

[: presita:]

Gravuraj karakteroj (karakteroj, kiuj ne estas reguloj.)

[: punkto:]

Punktoj de interpunkcio (karakteroj, kiuj ne estas leteroj, ciferoj, kontrolo-karakteroj aŭ spacaj karakteroj).

[: spaco:]

Spacaj signoj (kiel spaco, pestaña, kaj formfeed, por enoficigi kelkajn).

[: supra:]

Supraj kazaj alfabetaj karakteroj.

[: xdigit:]

Karakteroj kiuj estas heksadektaj ciferoj.

Ekzemple, antaŭ la normo POSIX, por kunigi karakterojn alfanuméricos, vi devus skribi / [A-Za-z0-9] / . Se via karaktero aro havis aliajn alfabetajn karakterojn en ĝi, ĉi tio ne kongruas kun ili, kaj se via karaktero aro difinis malsame de ASCII, ĉi tio eble eĉ ne kongruas kun la ASCII alfaŭraj karakteroj. Kun la karakteroj de karakteroj de POSIX, vi povas skribi / [[: alnum:]] / , kaj ĉi tio kongruas kun alfabetaj kaj nombraj signoj en via komputilo .

Du pliaj specialaj sekvencoj povas aperi en karakteroj listoj. Ĉi tiuj aplikiĝas al ne-ASCII-karaktero-aroj, kiuj povas havi unuajn simbolojn (nomitajn koladajn elementojn ), kiuj estas reprezentitaj kun pli ol unu karaktero, kaj ankaŭ plurajn karakterojn, kiuj estas ekvivalentaj por kolorado aŭ ordigo. (Ekzemple, en la franca, ebenaĵo '`e' 'kaj grave-akcentita e` estas ekvivalenta.)

Kolektantaj Simboloj

Koleranta simbolo estas multkaraktera koloranta elementon ligitan en [. kaj .] . Ekzemple, se ch estas frapanta elemento, tiam [[.ch.]] Estas regula esprimo kiu kongruas kun ĉi tiu frapanta elemento, dum [ch] estas regula esprimo kiu kongruas ĉu ch .

Ekvivalentaj klasoj

Ekvivalentklaso estas loka-specifa nomo por listo de karakteroj ekvivalentaj. La nomo estas enfermita en [= and =] . Ekzemple, la nomo e povus esti uzata por reprezenti ĉiujn `` e, '' `` e ',' 'kaj `` e`.' 'En ĉi tiu kazo, [[= e =]] estas regula esprimo kongruas kun iu ajn e , e ' , aŭ e` .

Ĉi tiuj trajtoj estas tre valoraj en ne-anglaj parolantoj. La bibliotekaj funkcioj, kiujn uzas gazeto por regulaj esprimoj, nuntempe nur agnoskas POSIX-karakterojn; Ili ne rekonas kolantan simbolojn aŭ ekvivalentajn klasojn.

La \ y , \ B , \ < , \> , \ w , \ W , \ ` , kaj \ ' operatoroj estas specifa al gawk ; ili estas etendoj bazitaj sur instaladoj en la GNU-regulaj esprimaj bibliotekoj.

La diversaj komandlinioj elektas kiel gawk interpretas karakterojn en regulaj esprimoj.

Neniu ebloj

En la defaŭlta kazo, gawk provizas ĉiujn instalaĵojn de regulaj esprimoj de POSIX kaj la regulaj esprimistoj de GNNU priskribitaj pli supre. Tamen, intervalaj esprimoj ne estas subtenataj.

--posix

Nur regulaj esprimoj de POSIX estas subtenataj, la GNU-operatoroj ne estas specialaj. (Eg, \ w kongruas laŭvorta w ). Intervalaj esprimoj estas permesitaj.

- Tradicia

Tradicia Unikso estas normalaj esprimoj. La GNU-operatoroj ne estas specialaj, intervalaj esprimoj ne estas haveblaj, kaj nek estas la karakteroj de karakteroj POSIX ( [[: alnum:]] kaj tiel plu). Karakteroj priskribitaj per okaj kaj heksadekaj eskapitaj sekvencoj estas traktataj laŭvorte, eĉ se ili reprezentas regulajn esprimojn.

- intertempo

Permesu intervalajn esprimojn en regulaj esprimoj, eĉ se - provizoraj estis provizitaj.

Agoj

Aktivaj deklaroj estas kadritaj en krampoj, { kaj } . Ago-deklaroj konsistas el la kutimaj faritaj, kondiĉaj kaj malplenaj deklaroj trovitaj en plej multaj lingvoj. La telefonistinoj, kontrolo-deklaroj kaj enigaj / eliritaj deklaroj disponeblas laŭ tiuj en C.

Telefonistoj

La telefonistoj en AWK, por malkreskanta prioritato, estas

( ... )

Grupoj

$

Kampo referenco.

++ -

Pliigo kaj dekremento, ambaŭ prefikso kaj postfikso.

^

Eksponado ( ** ankaŭ povas esti uzata, kaj ** = por la farita operatoro).

+ -!

Unaria plus, unara minus, kaj logika negado.

* /%

Multobligo, divido kaj modulo.

+ -

Aldono kaj subtraho.

spaco

Konkordo de ŝnuro.

<>

<=> =

! = == La regulaj rilataj operatoroj.

~! ~

Regula esprimo-matĉo, negata matĉo. NOTO: Ne uzu konstantan regulan esprimon ( / foo / ) sur la maldekstra flanko de ~! ~ . Nur uzu unu dekstre. La esprimo / foo / ~ exp havas la saman signifon kiel (($ 0 ~ / foo /) ~ exp ) . Ĉi tio ne kutime estas intencita.

en

Arraya membreco.

&&

Logika Kaj.

||

Logika OR

?:

La C kondiĉa esprimo. Ĉi tiu havas la formon expr1 ? expr2 : expr3 . Se expr1 estas vera, la valoro de la esprimo estas expr2 , alie ĝi estas expr3 . Nur unu el expr2 kaj expr3 estas taksata.

= + = - =

* = / =% = ^ = Asigno. Ambaŭ absoluta farita ( var = valoro ) kaj operatoro-asigno (la aliaj formoj) estas subtenataj.

Kontrolo-Ŝtatoj

La kontrolo-deklaroj estas kiel sekvas:

se ( kondiĉo ) deklaro [ alia deklaro ] dum ( kondiĉo ) deklaro faras deklaron dum ( kondiĉo ) por ( expr1 ; expr2 ; expr3 ) deklaro por ( var en tabelo ) deklaro rompi daŭre pluigi tabelo [ indekso ] forviŝi tabelo eliro [ esprimo ] { deklaroj }

I / O Ŝtatoj

La deklaroj de enigo / eligo estas la jenaj:

fermi ( dosiero [ , kiel ] )

Fermi dosieron, pipon aŭ kunprocezon. La laŭvola kiel oni devas uzi nur kiam ĝi fermas unu finon de du-vojo tubo al kunprocezo. Ĝi devas esti ŝnura valoro, ĉu "al""de" .

kalkulo

Ŝanĝu $ 0 de la sekva eniga rekordo; aro NF , NR , FNR .

getline < dosiero

Ŝanĝu $ 0 el sekva rekordo de dosiero ; starigis NF .

getline var

Agordi var de la sekva eniga rekordo; aro NR , FNR .

getline var < dosiero

Agordi varon de la sekva rekordo de dosiero .

komando | kalkulo [ var ]

Kuru komando pipante la eligo ĉu en $ 0var , kiel supre.

komando | & getline [ var ]

Ruli komandon kiel kunprocezo pipanta la eligon ĉu en $ 0var , kiel supre. Ko-procezoj estas gawk- etendo.

poste

Ĉesu pretigi la aktualan rekordon. La sekva eniga registro estas legata kaj prilaborado komenciĝas kun la unua ŝablono en la programo AWK. Se la fino de la eniga datumo estas atingita, la END- blokoj (se) estas ekzekutitaj.

sekva

Ĉesu pretigi la aktualan enigan dosieron. La sekva eniga registro legas el la sekva eniga dosiero. FILENAME kaj ARGIND estas ĝisdatigitaj, FNR restarigas 1, kaj la transformado komenciĝas kun la unua ŝablono en la programo AWK. Se la fino de la eniga datumo estas atingita, la END- blokoj (se) estas ekzekutitaj.

presi

Printas la nunan rekordon. La eliga rekordo estas nuligita per la valoro de la variablo de ORS .

presi expr-listo

Printas esprimojn. Ĉiu esprimo estas apartigita per la valoro de la OFS- variablo. La eliga rekordo estas nuligita per la valoro de la variablo de ORS .

presi expr-list > dosieron

Printas esprimojn sur dosiero . Ĉiu esprimo estas apartigita per la valoro de la OFS- variablo. La eliga rekordo estas nuligita per la valoro de la variablo de ORS .

printf fmt, expr-listo

Formato kaj presado.

printf fmt, expr-list > dosiero

Formato kaj presi sur dosiero .

sistemo ( cmd-linio )

Ekzekuti la komandon cmd-linion kaj redonu la eliron. (Ĉi tio eble ne estas havebla sur ne-POSIX-sistemoj.)

fflush ( [ dosiero ] )

Forpuŝu iujn bublojn asociitajn kun la malferma eliga dosiero aŭ tubaro- dosiero . Se la dosiero mankas, tiam norma eligo estas klakita. Se dosiero estas la nula kordo, tiam ĉiuj malfermaj elsendaj dosieroj kaj pipoj havas siajn bublojn forfluitaj.

Aldonaj aldona redirektoj estas permesitaj por presi kaj printf .

presi ... >> dosieron

aldonas eliron al la dosiero .

presi ... | ordonu

skribas sur pipo.

presi ... | & komando

sendas datumojn al kunprocezo.

La getline- komando redonas 0 je fino de dosiero kaj -1 per eraro. Sur eraro, ERRNO enhavas ĉenon priskribante la problemon.

NOTO: Se vi uzas tubon aŭ kunproceson al la linio de linio aŭ de presaĵoprintf ene de buklo, vi devas uzi fermon () por krei novajn ekzemplojn de la komando. AWK ne aŭtomate fermas tubojn aŭ kunprocesojn kiam ili revenas EOF.

La printpriskribo

La versioj de AWK de la printf- deklaro kaj sprintf () funkcio (vidu sube) akceptas la jenajn konvertajn formatojn:

% c

Karaktero ASCII. Se la argumento uzita por % c estas nombra, ĝi estas traktita kiel karaktero kaj presita. Alie, la argumento estas supozita kiel ĉeno, kaj la nura unua karaktero de tiu ĉeno estas presita.

% d , % i

Decimala nombro (la entjera parto).

% e,% E

Numero flotante de la formo [-] d.dddddde [+ -] dd . La formato % E uzas E anstataŭ e .

% f

Flosanta punkto de la formo [-] ddd.dddddd .

% g,% G

Uzu % e% f konvertiĝon, kiom ajn pli mallonga, kun nemarkaj nuloj elstrekitaj. La % G formato uzas % E anstataŭ % e .

% o

Nekritigita octala nombro (ankaŭ entjero).

% u Senskribita dekuma nombro (denove, entjero).

% s

Karaktero.

% x,% X

Neksignita heksadekan nombro (entjero). La % X- formato uzas ABCDEF anstataŭ abcdef .

%%

Ununura % karaktero; neniu argumento konvertiĝas.

Laŭvolaj kromaj parametroj povas kuŝi inter la % kaj la kontrola letero:

kalkuli $

Uzu la kalkulon de la kalkulo ĉe ĉi tiu punkto en la formato. Ĉi tio estas (nomita, vokis) poscia specifigilo kaj estas celita ĉefe por uzo en tradukitaj versioj de formatkordoj, ne en la originala teksto de AWK-programo. Ĝi estas gawk- etendo.

-

La esprimo devas esti forlasita-pravigita ene de sia kampo.

spaco

Por nombraj konvertiĝoj, prefiksaj valoroj kun spaco kaj negativaj valoroj kun minus signo.

+

La plusa signo, uzita antaŭ la larĝa modifilo (vidu sube), diras ĉiam provizi signon por nombraj konvertiĝoj, eĉ se la datumoj esti formatitaj estas pozitivaj. La + preterlasas la spacan modifilon.

N

Uzu alternativon por certaj kontrolaj literoj. Por % o , provizu ĉefan nulon. Por % x , kaj % X , provizu ĉefo 0x0X por rezulto nezero . Por % e , % E , kaj % f , la rezulto ĉiam enhavas dekuman punkton. Por % g , kaj % G , trapasantaj nuloj ne estas forigitaj de la rezulto.

0

Ĉefo 0 (nulo) agas kiel flago, kiu indikas ke la eligo devas esti plenigita kun nuloj anstataŭ spacoj. Ĉi tio aplikas eĉ al ne-nombraj eligaĵaj formatoj. Ĉi tiu flago nur havas efikon kiam la kampo larĝa estas pli larĝa ol la valoro esti presita.

larĝa

La kampo devas esti plenigita al ĉi tiu larĝa. La kampo kutime estas plenigita de spacoj. Se la 0- flago estis uzata, ĝi estas plenigita kun nuloj.

. prec

Numero kiu specifas la precizecon uzi dum presado. Por la % e , % E kaj % f formatoj, ĉi tio specifas la nombron de ciferoj, kiujn vi volas presita dekstre de la dekuma punkto. Por la % g , kaj % G- formatoj, ĝi specifas la maksimuman numeron de signifaj ciferoj. Por la % d , % o , % i , % u , % x , kaj % X- formatoj, ĝi specifas la minimuman nombron de ciferoj por presi. Por % s , ĝi specifas la maksimuman nombron de signoj de la kordo, kiu devus esti presita.

La dinamika larĝeco kaj antaŭaj kapabloj de la ANSI C printf () rutinoj estas subtenataj. A * anstataŭ la larĝajprecaj specifaĵoj kaŭzas siajn valorojn el la listo de argumentoj al printfsprintf () . Por uzi pozician specifilon kun dinamika larĝa aŭ precizeco, provizu la kalkulon $ post la * en la formato-ĉeno. Ekzemple, "% 3 $ * 2 $. * 1 $ s" .

Specialaj dosiernomoj

Farante I / O-redirekton de aŭ presiprintf en dosieron, aŭ per getline de dosiero, gawk rekonas iujn specialajn dosiernomojn interne. Ĉi tiuj dosiernomoj permesas aliron al malfermaj dosieraj priskriboj hereditaj de la gepatra procezo de gawk (kutime la ŝelo). Ĉi tiuj dosiernomoj ankaŭ povas esti uzataj en la komandlinio por nomi datumajn dosierojn. La dosiernomoj estas:

/ dev / stdin

La norma enigo.

/ dev / stdout

La norma eligo.

/ dev / stderr

La norma erara eligo.

/ dev / fd / n

La dosiero asociita kun la priskriba dosiero n .

Ĉi tiuj estas aparte utilaj por eraraj mesaĝoj. Ekzemple:

presi "Vi blovis ĝin!" > "/ dev / stderr"

dum vi deziras uzi ĝin alie

presi "Vi blovis ĝin!" | "kato 1> & 2"

La sekvaj specialaj dosiernomoj povas esti uzataj kun la operatoro & co-procezo por krei ligojn de TCP / IP-reto.

/ inet / tcp / lport / roost / rport

Dosiero por TCP / IP- rilato en loka haveno por subteni al malproksima gastiganta reto en remota haveno. Uzu havenon de 0 por ke la sistemo elektu havenon.

/ inet / udp / lport / roost / rport

Simila, sed uzu UDP / IP anstataŭ TCP / IP.

/ inet / kruda / lport / rost / rport

Rezervita por estonta uzo.

Aliaj specialaj dosiernomoj havigas aliron al informo pri la kuranta gawk- procezo. Ĉi tiuj dosiernomoj nun estas malaktualaj. Uzu la oferton PROCINFO por akiri la informojn, kiujn ili provizas. La dosiernomoj estas:

/ dev / pid

Legante ĉi tiun dosieron redonas la procezan IDon de la nuna procezo, en decimala, finita per nova linio.

/ dev / ppid

Legante ĉi tiun dosieron redonas la progreson ID de la nuna procezo, en decimala, finita per nova linio.

/ dev / pgrpid

Legante ĉi tiun dosieron redonas la procezan grupon ID de la nuna procezo, en decimala, finita per nova linio.

/ dev / uzanto

Legante ĉi tiun dosieron redonas ununura rekordo nuligita per nova linio. La kampoj estas apartaj per spacoj. $ 1 estas la valoro de la getuid (2) sistemo alvoko, $ 2 estas la valoro de la geteuid (2) sistemo voko, $ 3 estas la valoro de getgid (2) sistemo voko kaj $ 4 estas la valoro de la getegid (2) sistemo nomita. Se estas iuj pliaj kampoj, ili estas la grupaj ID- retoj retiritaj de getgroups (2). Multoblaj grupoj eble ne estas subtenataj en ĉiuj sistemoj.

Nombraj Funkcioj

AWK havas la jenajn enkonstruitajn aritmetikajn funkciojn:

atan2 ( y , x )

Revenas la arktangulon de y / x en radianoj.

cos ( expr )

Revenas la kosinuson de expr , kiu estas en radianoj.

exp ( expr )

La eksponenta funkcio.

int ( expr )

Truncas al entjero.

ensaluto ( expr )

La natura logaritma funkcio.

rand ()

Revenas hazarda nombro inter 0 kaj 1.

peko ( expr )

Revenas la sinon de expr , kiu estas en radianoj.

sqrt ( expr )

La kvadrata radika funkcio.

srand ( [ expr ] )

Uzoj expr kiel novan semon por la hazarda nombra generatoro. Se neniu expr estas provizita, la tempo de tago estas uzata. La redonvaloro estas la antaŭa semo por la hazarda nombra generatoro.

Stringaj Funkcioj

Gawk havas la jenajn korpajn funkciojn:

asort ( s [ , d ] )

Revenas la nombro da elementoj en la fonta tabelo s . La enhavo de s estas ordigitaj per la normalaj reguloj de la gawk por kompari valorojn, kaj la indeksoj de la ordigitaj valoroj de s estas anstataŭitaj per sekvencaj entjeroj komenciĝantaj kun 1. Se la laŭvola destinaĵo f estas specifita, tiam s estas unue duobligita en d , kaj tiam d estas ordo, lasante la indeksojn de la fonta tabelo neŝanĝita.

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

Serĉu la celan kordon t por matĉoj de la regula esprimo r . Se h estas ĉeno komencanta kun gG , tiam anstataŭigu ĉiujn matĉojn de r kun s . Alie, h estas nombro indikanta kian matĉon de r por anstataŭigi. Se t ne estas provizita, $ 0 estas uzata anstataŭe. Ene de la anstataŭaj tekstoj, la sekvenco \ n , kie n estas cifero de 1 ĝis 9, povas esti uzata por indiki nur la tekston, kiu egaligis la nombran submetiĝon. La vico \ 0 reprezentas la tutan egalitan tekston, kiel la karaktero & . Kontraste kun sub () kaj gsub () , la modifita ĉeno estas redonita kiel rezulto de la funkcio, kaj la originala celo-ŝnuro ne ŝanĝiĝas.

gsub ( r , s [ , t ] )

Por ĉiu substringo kongruas kun la regula esprimo r en la ĉeno t , anstataŭigas la ĉenon kaj redonu la nombron de anstataŭigoj. Se t ne estas provizita, uzu $ 0 . En la anstataŭa teksto anstataŭas la tekston, kiu efektive kongruis. Uzu \ & akiri laŭvortan & . (Ĉi tio devas esti tajpita kiel "\\ &" ; vidu GAWK: Efika AWK-Programado por pli plena diskuto pri la reguloj por & s kaj backslashes en la anstataŭa teksto de sub () , gsub () , kaj gensub () .)

indekso ( s , t )

Revenas la indekson de la ĉeno t en la kordo s , aŭ 0 se t ne ĉeestas. (Ĉi tio implicas, ke signoj de karaktero komenciĝas ĉe unu.)

longo ( [ s ] )

Revenas la longon de la ĉeno , aŭ la longo de $ 0 se s ne estas provizita.

matĉo ( s , r [ , a ] )

Revenas la pozicion en s kie la regula esprimo r okazas, aŭ 0 se r ne ĉeestas, kaj aranĝas la valorojn de RSTART kaj RLENGTH . Notu, ke la argumenta ordo estas la sama kiel la operatoro: str ~ re . Se tabelo estas provizita, a estas liberigita kaj tiam elementoj 1 per n estas plenigitaj per la porcioj de s (tiu, ke, kiu) koincidas la koresponda _preshesized_ subexpresio en r . La 0-a elemento de enhavas la porcion de s kun la tuta regula esprimo r .

divido ( s , a [ , r ] )

Disvastigas la ŝnuron s en la tabelo sur la regula esprimo r kaj redonas la nombro da kampoj. Se r estas preterlasita, FS estas uzata anstataŭe. La tabelo estas liberigita unue. Dividado kondutas identike al kampo dividanta, priskribita supre.

sprintf ( fmt , expr-listo )

Printas expr-listo laŭ fmt , kaj redonas la rezultantan kordon.

strtonum ( str )

Ekzamenas str , kaj redonas ĝian nombran valoron. Se str komencas kun eminenta 0 , strtonum () supozas, ke str estas octala nombro. Se str komencas kun ĉefo 0x0X , strtonum () supozas, ke str estas heksadekuma nombro.

sub ( r , s [ , t ] )

Same kiel gsub () , sed nur la unua kongrua substringo estas anstataŭigita.

substr ( s , i [ , n ] )

Revenas plejparte n- signan substancon de s komencanta ĉe i . Se n estas preterlasita, la resto de s estas uzata.

toloro ( str )

Revenas kopion de la ŝnuro str , kun ĉiuj supraj kazaj signoj en str tradukitaj al iliaj respondaj malsupraj kazaj partoj. Ne-alfabetaj karakteroj restas senŝanĝaj.

toupper ( str )

Revenas kopion de la strio str , kun ĉiuj malsukcesaj signoj en str tradukitaj al iliaj respondaj supraj kazaj partoj. Ne-alfabetaj karakteroj restas senŝanĝaj.

Tempoj Funkcioj

Pro tio ke unu el la ĉefaj uzoj de AWK-programoj estas procesado de dosieroj, kiuj enhavas tempon-stampojn informojn, gawk provizas la jenajn funkciojn por akiri tempon-poŝtmarkojn kaj formatante ilin.

mktime ( datespec )

Rulaj datoj en tempo stampita de la sama formo kiel redonita de systime () . La datumo estas kordo de la formo YYYY MM DD HH MM SS [DST] . La enhavo de la ŝnuro estas ses aŭ sep nombroj reprezentantaj respektive la plenan jaron inkluzive de jarcento, la monato de 1 ĝis 12, la tagon de la monato de 1 ĝis 31, la horo de la tago de 0 ĝis 23, la minuto de 0 al 59, kaj la dua de 0 ĝis 60, kaj laŭvola taglumo savanta flagon. La valoroj de ĉi tiuj nombroj ne bezonas esti ene de la rangoj specifitaj; Ekzemple, horo de -1 signifas 1 horo antaŭ noktomezo. La greka kalendaro de origino-nulo estas supozita, kun la jaro 0 antaŭa jaro 1 kaj jaro -1 antaŭa jaro 0. La tempo estas supozita esti en la loka tempozono. Se la flago de la taglumo estas pozitiva, la tempo estas supozata kiel taglumo-tempo; se nulo, la tempo estas supozata kiel norma tempo; kaj se negativa (la defaŭlta), mktime () provas determini ĉu taglumo-tempo estas efektive por la specifita tempo. Se datumbazo ne enhavas sufiĉe da elementoj aŭ se la rezultanta tempo estas ekstere de gamo, mktime () revenas -1.

strftime ( [ formato [ temptempa ]] )

Formatoj timestamp laŭ la specifaĵo en formato. La temptempa tempo devus esti de la sama formo, kiel redonis per systime () . Se timtempo perdiĝas, la nuna tempo de la tago estas uzata. Se formato mankas, uzata ekvivalenta formato al la eligo de dato (1) estas uzata. Vidu la specifon por la strftime () funkcio en ANSI C por la formataj konvertiĝoj, kiuj garantias esti disponeblaj. Publika registara versio de strftime (3) kaj viro-paĝo por ĝi venas kun gawk ; se tiu versio estis uzita por konstrui gawk , tiam ĉiuj konvertiĝoj priskribitaj en tiu paĝo estas disponeblaj por gawk.

systime ()

Revenas la nuna tempo de la tago kiel la nombro da sekundoj ekde la Epoch (1970-01-01 00:00:00 UTC pri POSIX-sistemoj).

Funkcioj de Bitaj Kontribuoj

Komencante kun versio 3.1 de gawk , la jenaj bitaj manipularaj funkcioj estas haveblaj. Ili funkcias per konvertado de duobla precizeco flosantaj punktoj al ne signitaj longaj entjeroj, farante la operacion, kaj tiam konvertas la rezulton al flospunkto. La funkcioj estas:

kaj ( v1 , v2 )

Revenu la bitotan AND de la valoroj provizitajn per v1 kaj v2 .

compl ( val )

Revenu la biksa komplemento de val .

lshift ( val , kalkulo )

Revenu la valoro de val , movita lasita per kalkulataj bitoj.

aŭ ( v1 , v2 )

Revenu la netaŭton OR de la valoroj provizitaj per v1 kaj v2 .

rshift ( val , kalkulo )

Revenu la valoron de val , ŝanĝite laŭ grafaj bitoj.

xor ( v1 , v2 )

Revenu la bitore XOR de la valoroj provizitaj per v1 kaj v2 .

Funkcioj de internaciigo

Komencante kun versio 3.1 de gawk , la sekvaj funkcioj povas esti uzataj el via programo AWK por traduki ŝnurojn ĉe tempo de ekzekuto. Por kompletaj detaloj, vidu GAWK: Efika Programado de AWK .

bindtextdomain ( dosierujo [ , domajno ] )

Specifas la dosierujon kie gawk serĉas la. Mo dosierojn, se ili ne aŭdos en la '`normaj' '(ekz. Dum provado). Ĝi redonas la dosierujon kie regado estas `` ligita. ''

La defaŭlta domajno estas la valoro de TEXTDOMAIN . Se dosierujo estas la nula kordo ( "" ), tiam bindtextdomain () redonas la nunan ligilon por la donita regado .

dcgettext ( kordo [ , domajno [ , kategorio ]] )

Revenas la tradukon de ĉeno en tekstra domajno por loka kategorio kategorio . La defaŭlta valoro por domajno estas la nuna valoro de TEXTDOMAIN . La defaŭlta valoro por kategorio estas "LC_MESSAGES" .

Se vi provizas valoron por kategorio , ĝi devas esti kordo egala al unu el la konataj lokaj kategorioj priskribitaj en GAWK: Efika AWK-Programado . Vi ankaŭ devas provizi tekston-domajnon. Uzu TEXTDOMAIN se vi volas uzi la aktualan domajnon.

dcngettext ( string1 , string2 , number [ , domain [ , category ]] )

Revenas la pluran formon uzatan por la nombro de la traduko de string1 kaj string2 en tekstra domajno por kategorio de loka kategorio . La defaŭlta valoro por domajno estas la nuna valoro de TEXTDOMAIN . La defaŭlta valoro por kategorio estas "LC_MESSAGES" .

Se vi provizas valoron por kategorio , ĝi devas esti kordo egala al unu el la konataj lokaj kategorioj priskribitaj en GAWK: Efika AWK-Programado . Vi ankaŭ devas provizi tekston-domajnon. Uzu TEXTDOMAIN se vi volas uzi la aktualan domajnon.

USER-DEFINEDAJ FUNKOJ

Funkcioj en AWK estas difinitaj kiel sekvas:

funkcia nomo ( parametro listo ) { deklaroj }

Funkcioj estas ekzekutitaj kiam ili estas vokitaj de ene de esprimoj en ĉu ŝablonoj aŭ agoj. Realaj parametroj provizitaj en la funkcia alvoko estas uzataj por instigi la formalajn parametrojn deklaritajn en la funkcio. Arrays pasas per referenco, aliaj variabloj preterpasas valoro.

Pro tio ke funkcioj ne estis origine de la AWK-lingvo, la provizo por lokaj variabloj estas iom mallerta: ili estas deklaritaj kiel kromaj parametroj en la parametra listo. La konvencio estas apartigi lokajn variablojn de realaj parametroj per ekstraj spacoj en la parametra listo. Ekzemple:

funkcio f (p, q, a, b) # a kaj b estas lokaj {...} / abc / {...; f (1, 2); ...}

La maldekstra paréntesis en funkcia alvoko postulas tuj sekvi la funkcian nomon, sen iu ajn interna blanka spaco. Ĉi tio estas eviti sintaksan ambigüedad kun la concatenado-operatoro. Ĉi tiu limigo ne aplikeblas al la korpigitaj funkcioj listigitaj supre.

Funkcioj povas nomi unu la alian kaj povas esti rekursie. Funkciaj parametroj uzataj kiel lokaj variabloj estas inicialigitaj al la nula kordo kaj la nombro nombro sur funkcia alvoko.

Uzu rondveturon por redoni valoron de funkcio. La valoro de rondveturo estas nedifinita se neniu valoro estas provizita, aŭ se la funkcio redonas per `` malŝalti '' la finon.

Se --lint estis provizita, gawk avertas pri alvokoj al nedifinitaj funkcioj ĉe matempa tempo, anstataŭ en tempo de ekzekuto. Voki nedifinitan funkcion je kurita tempo estas fatala eraro.

La vorto func povas esti uzata anstataŭ funkcio .

NOVA FARKOJ DYNAMICALLA

Komencante kun versio 3.1 de gawk , vi povas dinamike aldoni novajn enkorpajn funkciojn al la kuranta gawk- interpretilo. La kompletaj detaloj estas preter la amplekso de ĉi tiu manlibro; vidu GAWK: Efika Programado de AWK por la detaloj.

etendo ( objekto , funkcio )

Dinamike ligas la dividitan cel-dosieron nomitan per objekto , kaj alvokas funkcion en tiu objekto, por realigi komencaĵon. Ĉi tiuj devus ambaŭ esti provizitaj kiel ŝnuroj. Revenas la valoron redonatan per funkcio .

Ĉi tiu funkcio estas provizita kaj dokumentita en GAWK: Efika AWK-Programado , sed ĉio pri ĉi tiu funkcio probable ŝanĝos en la sekva eldono. Ni forte rekomendas, ke vi ne uzu ĉi tiun funkcion por io, kion vi ne volos rekonsendi.

SIGNALOJ

pgawk akceptas du signalojn. SIGUSR1 igas ĝin forĵeti profilon kaj funkcion alvoki stack al la profila dosiero, kiu estas aŭ awkprof.out , aŭ kia ajn dosiero estis nomata per la --profile- opcio. Ĝi tiam daŭras kuri. SIGHUP igas ĝin forĵeti la profilon kaj funkcion alvoki stack kaj poste eliri.

Ekzemploj

Printu kaj ordigu la ensalutajn nomojn de ĉiuj uzantoj: BEGIN {FS = ":"} {presi $ 1 | "varo"} Kalkulu liniojn en dosiero: {nlines ++} END {print nlines} Antaŭvenu ĉiun linion laŭ sia nombro en la dosiero: {print FNR, $ 0} Konkatenato kaj linio numero (variaĵo sur temo): {print NR, $ 0}

Internigo

Stringaj konstantoj estas sekvencoj de karakteroj enmetitaj en duoblaj citaĵoj. En ne-anglaj parolantaj medioj, eblas marki ĉenojn en la programo AWK, kiu postulas tradukadon al la denaska lingvo. Tiaj ŝnuroj estas markitaj en la programo AWK kun ĉefa elstaraĵo (`` _ ''). Ekzemple,

gawk 'BEGIN {presi "saluton, mondon"}'

ĉiam presas saluton, mondon . Sed,

gawk 'BEGIN {print _ "saluton, mondon"}'

povus presi bonjour, monde en Francio.

Estas pluraj paŝoj implikitaj en produktado kaj kurado de lokebla programo AWK.

1.

Aldonu BEGIN- agon por asigni valoron al la variablo de TEXTDOMAIN por agordi la tekston domajnon al nomo asociita kun via programo.


BEGIN {TEXTDOMAIN = "miaprog"}

Ĉi tio permesas gawk trovi la .mo- dosieron asociita kun via programo. Sen ĉi tiu paŝo, gawk uzas la mesaĝojn de teksto-domajno, kiu verŝajne ne enhavas tradukojn por via programo.

2.

Marki ĉiujn ŝnurojn, kiuj devus esti tradukitaj kun ĉefaj substrekoj.

3.

Se necese, uzu la funkciojn dcgettext () kaj / aŭ bindtextdomain () en via programo, kiel konvene.

4.

Kuru gawk --gen-po -f myprog.awk> myprog.po por generi .po- dosieron por via programo.

5.

Provizu taŭgajn tradukojn, kaj konstruu kaj instali respondan. Mo dosieron.

La internaciaj trajtoj estas priskribitaj en plena detalo en GAWK: Efika AWK-Programado .

Posix Kongruo

Unua celo por gawk estas kongruo kun la normo POSIX, same kiel kun la plej nova versio de UNIKSO. Por ĉi tio, gawk korpigas la jenajn uzajn videblajn funkciojn, kiuj ne estas priskribitaj en la libro AWK, sed estas parto de la versio de Bell Laboratories de awk kaj estas en la normo POSIX.

La libro indikas, ke komerca linio-donacado okazas kiam alie malfermus la argumenton kiel dosieron, kiu estas post kiam la BEGIN- bloko estas ekzekutita. Tamen, en pli fruaj implementoj, kiam tia tasko aperis antaŭ iuj dosiernomoj, la faro okazos antaŭ ol la BEGIN- bloko estis kurita. Aplikoj dependis de ĉi tiu "karakterizaĵo". Kiam awk estis ŝanĝita por kunigi ĝian dokumentadon, la -v- opcio por atribui variablojn antaŭ programo ekzekutita estis aldonita por akomodi aplikojn, kiuj dependis de la malnova konduto. (Ĉi tiu funkcio estis konsentite fare de la Bell Laboratories kaj la GNU-programistoj).

La opcio -W por apliki specifajn trajtojn estas de la normo POSIX.

Kiam prilaborado de argumentoj, gawk uzas la specialan eblon `` - '' por signali la finon de argumentoj. En kongrua reĝimo, ĝi avertas pri, sed alie, ignoros nedifinitajn eblojn. En normala funkciado, tiaj argumentoj estas transdonitaj al la programo AWK por procezi ĝin.

La libro AWK ne difinas la rondan valoron de srand () . La normo POSIX redonas la semon, kiun ĝi uzis, por permesi konservi spuron de hazarda nombro-sekvencoj. Sekve srand () en gawk ankaŭ redonas sian aktualan semon.

Aliaj novaj funkcioj estas: La uzo de pluraj -f- ebloj (de MKS awk ); la ENVIRON- tabelo; la \ a , kaj \ v eskapas sekvencojn (faritaj origine en gaŭko kaj retenitaj en la versio Bell Laboratories); la funkcioj de toloro () kaj toupper () korpigitaj (de la versio Bell Laboratories); kaj la specifaj konvertiĝoj de ANSI C en printf (faritaj unue en la versio Bell Laboratories).

Historiaj Trajtoj

Ekzistas du trajtoj de historiaj AWK-implementoj, kiujn subtenas. Unue, ĝi povas voki la longon () korpigita funkcion ne nur sen argumento, sed eĉ sen paréntesis! Tiel,

a = longo # Sankta Algol 60, Batman!

estas la sama kiel ĉiu el

a = longo ()
a = longo ($ 0)

Ĉi tiu trajto estas markita kiel `` nepre 'en la norma POSIX, kaj gawk avertas pri ĝia uzo se --lint estas specifita sur la komandlinio.

La alia funkcio estas la uzo de ĉu la daŭraj aŭ la rompaj deklaroj ekster la korpo de momento , por , aŭ faras buklon. Tradiciaj AWK-realigoj traktis tian uzadon kiel ekvivalenta al la sekva deklaro. Gawk subtenas ĉi tiun uzadon, se --traditional estis specifita.

GNU-Etendoj

Gawk havas multajn etendojn al POSIX awk . Ili estas priskribitaj en ĉi tiu sekcio. Ĉiuj etendoj priskribitaj ĉi tie povas esti malebligitaj per alvokado de gawk kun la -radicia elekto.

La sekvaj trajtoj de gawk ne estas haveblaj en POSIX awk .

*

Neniu trata serĉo estas farita por dosieroj nomitaj per la -f- opcio. Sekve la variablo de medio AWKPATH ne estas speciala.

*

La \ x ellasilo. (Malŝaltita kun --posix .)

*

La funkcio fflush () . (Malŝaltita kun --posix .)

*

La kapablo daŭrigi liniojn poste ? kaj :. (Malŝaltita kun --posix .)

*

Octalaj kaj heksadektaj konstantaj en AWK-programoj.

*

La variaĵoj ARGIND , BINMODE , ERRNO , LINT , RT kaj TEXTDOMAIN ne estas specialaj.

*

La variablo IGNORECASE kaj ĝiaj kromefikoj ne estas haveblaj.

*

La FIELDWIDTHS varia kaj fiksita larĝa kampo dividanta.

*

La PROCINFO- tabelo ne estas disponebla.

*

La uzo de RS kiel regula esprimo.

*

La specialaj dosieraj nomoj haveblaj por I / O-redirektado ne estas agnoskitaj.

*

La | & operatoro por krei ko-procezoj.

*

La kapablo dividi individuajn karakterojn uzante nulajn kordoj kiel la valoro de FS , kaj kiel la tria argumento dividi () .

*

La laŭvola dua argumento al la fermo () funkcio.

*

La laŭvola tria argumento al la matĉo () funkcio.

*

La kapablo uzi poziciajn specifulojn kun printf kaj sprintf () .

*

La uzo de forigo de tabeloj por forigi la tutan enhavon de tabelo.

*

La uzo de la sekva maniero por forlasi procesadon de la aktuala eniga dosiero.

*

La kaj () , asort () , bindtextdomain () , compl () , dcgettext () , gensub () , lshift () , mktime () , aŭ () , rshift () , strftime () , strtonum () , systime () kaj xor () funkcioj.

*

Ŝnureblaj kordoj.

*

Aldonante novajn funkciojn funkciojn dinamike kun la etendo () funkcio.

La libro AWK ne difinas la rondan valoron de la ferma funkcio. La proksimeco de Gawk () redonas la valoron de fclose (3), aŭ pclose (3), kiam oni fermas eligan dosieron aŭ tubaron respektive. Ĝi redonas la eliron de la procezo kiam fermas eniga tubaro. La rondvalo estas -1 se la nomata dosiero, tubo aŭ kunprocezo ne estis malfermita per redirekto.

Kiam gawk estas alvokita kun la -dradika opcio, se la fs- argumento al la -F- opcio estas `` t '', tiam FS estas fiksita al la pestaña karaktero. Rimarku, ke tajpa gawk -F \ t ... simple kaŭzas ke la ŝelo citas la `` t, '', kaj ne pasas `` \ t '' al la -F- opcio. Pro tio ke ĉi tio estas sufiĉe malbela speciala kazo, ĝi ne estas la defaŭlta konduto. Ĉi tiu konduto ankaŭ ne okazas se --posix estis specifita. Por vere akiri pestalan karakteron kiel la kampo-disigilo, plej bone estas uzi unuopaĵojn: gawk -F '\ t' ....

Vidu aliajn komandojn : atendu , lp , kompleta , ekzekv , getfacl , ioctl , uniq , rmmod , pvcreate , rsh , unix2dos , cal , fs , cd , iwpriv , swapon , autofs , talk , motd , free , lpr , execl , fdisk , ĉe , kiu , iwconfig , ifconfig , vgdisplay , open , lsmod , ntohs , mailq , kill , wtmp