Aprann lòd la Linux - gawk

Non

gawk - modèl optik ak lang pwosesis

Rezime

gawk [POSIX oswa opsyon style GNU] -f pwogram-dosye [ - ] dosye ...
gawk [POSIX oswa opsyon style GNU] [ - ] dosye -tèks dosye ...

pgawk [POSIX oswa opsyon style GNU] -f pwogram-dosye [ - ] dosye ...
pgawk [POSIX oswa opsyon style GNU] [ - ] dosye -tèks dosye ...

Deskripsyon

Gawk se pwojè GNU Pwojè a nan lang programmation AWK. Li konfòme ak definisyon an nan lang lan nan POSIX 1003.2 Kòmandman lang ak sèvis piblik Creole. Sa a se vèsyon an vire ki baze sou deskripsyon an nan lang programmation AWK , pa Aho, Kernighan, ak Weinberger, ak karakteristik yo ki adisyonèl yo te jwenn nan sistèm vèsyon an Version V Release 4 nan UNIX awk . Gawk tou bay plis resan Bell Laboratwa awk ekstansyon, ak yon kantite ekstansyon GNU-espesifik.

Pgawk se vèsyon an profiling nan gawk . Li se ki idantik nan tout fason gawk , eksepte ke pwogram kouri pi dousman, epi li otomatikman pwodui yon pwofil ekzekisyon nan awkprof.out a dosye lè fè. Gade opsyon a - pwofil , anba a.

Liy lòd la konsiste de opsyon gawk tèt li, tèks la pwogram AWK (si se pa apwovizyone atravè -f oswa -file opsyon yo), ak valè yo dwe disponib nan ARGC ak ARGV pre-defini varyab AWK.

Fòma Opsyon

Opsyon Gawk ka swa tradisyonèl POSIX yon opsyon lèt, oswa opsyon GNU style long. Opsyon POSIX kòmanse ak yon sèl `` - '', pandan y ap opsyon long kòmanse ak `` - ''. Opsyon Long yo bay pou tou de karakteristik GNU-espesifik ak pou karakteristik POSIX-obligatwa.

Apre estanda POSIX la, opsyon gawk -specific yo apwovizyone atravè agiman -W opsyon an. Opsyon miltip -W ka apwovizyone Chak -W opsyon gen yon opsyon ki koresponn lontan, jan detaye anba a. Agiman nan opsyon long yo swa ansanm ak opsyon a pa yon = siy, ki pa gen okenn espas entèvni, oswa yo ka bay nan pwochen liy lan lòd agiman. Opsyon long yo ka abreje, osi lontan ke abrevyasyon a rete inik.

Opsyon

Gawk aksepte opsyon sa yo, ki nan lis alfabè yo.

-F fs

- FILSIFT-FILSYON FS Sèvi ak fs pou separatè a jaden D '(valè a nan varyab la predefini FS ).

-v var = val

--assign var = val Bay Val valè a varyab la, anvan ekzekisyon pwogram lan kòmanse. Valè varyab sa yo disponib nan blòk BEGIN yon pwogram AWK.

-f pwogram-dosye

- dosye pwogram dosye Li sous pwogram AWK soti nan dosye dosye -dosye a , olye pou yo soti nan premye agiman liy lan lòd. Ou kapab itilize miltip -f (oswa --file ) opsyon.

-mf NNN

-mr NNN Mete limit divès memwa nan valè NNN a . Drapo F a kouche kantite maksimòm jaden, ak drapo r la etabli gwosè dosye maksimòm. Sa yo de drapo ak opsyon nan -m yo soti nan vèsyon rechèch la Laboratwa Bell nan UNIX awk . Yo inyore pa gawk , depi gawk pa gen okenn limit pre-defini.

-W konpatib

-W tradisyonèl

--compat

--Traditional kouri nan mòd konpatibilite . Nan mòd konpatibilite, gawk konpòte li idantikman UNIX awk ; Pa gen okenn nan ekstansyon yo GNU-espesifik yo rekonèt. Itilize nan - tradisyonèl se pi pito sou fòm yo lòt nan opsyon sa a. Gade ekstansyon GNU , anba a, pou plis enfòmasyon.

-W copyleft

-W copyright

--copyleft

--copyright Enprime vèsyon an kout nan GNU enfòmasyon sou copyright mesaj sou pwodiksyon an estanda ak sòti avèk siksè.

-W Dump-varyab [ = dosye ]

--dump-variables [ = ranpli ] Ekri yon lis varye de varyab mondyal, kalite yo ak valè final yo ranpli . Si pa gen okenn dosye bay, gawk sèvi ak yon dosye yo te rele awkvars.out nan anyè aktyèl la.

Èske w gen yon lis tout varyab mondyal yo se yon bon fason yo gade pou erè tipografik nan pwogram ou an. Ou ta tou itilize opsyon sa a si ou gen yon pwogram gwo ak yon anpil nan fonksyon, epi ou vle asire w ke fonksyon ou pa inadvèrtans sèvi ak varyab mondyal ke ou vle di ke yo dwe lokal yo. (Sa a se yon erè patikilyèman fasil fè ak non varyab senp tankou mwen , j , ak sou sa.)

-W ede

-W l '

- ede

--USAGE Enprime yon rezime relativman kout nan opsyon ki disponib yo sou pwodiksyon an estanda. (Pou chak GNU Coding Standards , opsyon sa yo lakòz yon imedya, sòti siksè.)

-W lint [ = fatal ]

--lint [ = fatal ] Bay avètisman sou konstwi ki ézitan oswa ki pa pòtab ak lòtAWK enplemantasyon. Ak yon agiman opsyonèl nan fatal , avètisman pousye vin erè fatal. Sa a pouvwa ap radikal, men itilizasyon li pral sètènman ankouraje devlopman nan pwogram AWK cleaner.

-W lint-fin vye granmoun

--lint-old Bay avètisman sou konstwi ki pa pòtab vèsyon orijinal la nan Unix awk .

-W gen-po

- Scan -po- Scan ak parse pwogram nan AWK, ak jenere yon GNU .po fòma dosye sou pwodiksyon estanda ak antre pou tout strings lokalize nan pwogram nan. Pwogram nan tèt li pa egzekite. Al gade nan distribisyon Gettext GNU pou plis enfòmasyon sou .po dosye.

-W non-desimal-done

- Non-desimal-done Rekonèt valè octal ak ekzadesimal nan done entrodiksyon . Sèvi ak opsyon sa a avèk gwo prekosyon!

-W posix

--Pozisyon sa a vire sou mòd konpatibilite , ak sa ki annapre yo restriksyon adisyonèl:

*

\ x sekans chape yo pa rekonèt.

*

Se sèlman espas ak tab aji kòm separateur jaden lè FS se mete nan yon espas sèl, Newline pa fè sa.

*

Ou pa ka kontinye liy apre ? ak : .

*

Fonksyon nan sinonim pou fonksyon an mo kle pa rekonèt.

*

Operatè yo ** ak ** = pa ka itilize nan plas ^ ak ^ = .

*

Fuzibl () fonksyon an pa disponib.

-W pwofil [ = prof_file ]

- pwofil [ = prof_file ] Voye profiling done prof_file . Default la se awkprof.out . Lè kouri ak gawk , pwofil la se jis yon vèsyon "bèl enprime" nan pwogram nan. Lè kouri ak pgawk , pwofil la gen konte ekzekisyon nan chak deklarasyon nan pwogram nan nan maj la gòch ak konte rele konte pou chak fonksyon itilizatè defini.

-W re-entèval

-re-entèval Pèmèt itilize ekspresyon entèval nan matche ekspresyon regilye (al gade regilye ekspresyon , anba a). Entèval entèval yo pa tradisyonèlman disponib nan lang AWK. POSIX estanda a te ajoute yo, fè awk ak egrep ki konsistan youn ak lòt. Sepandan, itilizasyon yo gen chans rive nan kraze fin vye granmoun pwogram AWK, se konsa gawk sèlman bay yo si yo mande ak opsyon sa a, oswa lè - dispozisyon se espesifye.

-W sous pwogram-tèks

- Sous pwogram-tèks Sèvi ak pwogram tèks kòm kòd sous pwogram AWK. Opsyon sa a pèmèt fasilite intermixing nan fonksyon bibliyotèk (yo itilize via opsyon yo -f ak --file ) ak kòd sous antre nan liy lan lòd. Li fèt sitou pou mwayen gwo pwogram AWK ki itilize nan Scripts koki.

-W vèsyon

--version Enprime enfòmasyon vèsyon pou kopi sa a an patikilye nan gawk sou pwodiksyon an estanda. Sa a se itil sitou pou konnen si kopi aktyèl la nan gawk sou sistèm ou a jiska dat ki gen rapò ak tou sa Fondasyon an lojisyèl gratis distribye. Sa a se tou itil lè rapò pinèz. (Pou chak GNU Coding Standards , opsyon sa yo lakòz yon imedya, sòti siksè.)

- Siyal nan fen opsyon. Sa a se itil yo pèmèt plis agiman nan pwogram nan AWK tèt li kòmanse ak yon `` - ''. Sa a se sitou pou konsistans ak konvansyon an konvèsyon agiman itilize pa pi lòt pwogram POSIX.

Nan mòd konpatibilite, nenpòt lòt opsyon yo afebli kòm envalid, men yo otreman inyore. Nan operasyon nòmal, osi lontan ke tèks pwogram yo te apwovizyone, opsyon enkoni yo pase sou pwogram AWK a nan ARGV etalaj la pou pwosesis. Sa a se patikilyèman itil pou kouri pwogram AWK atravè '`# #' '' mekanis entèprèt mekanis la.

AWK Pwogram Egzekisyon

Yon pwogram AWK konsiste de yon sekans nan deklarasyon modèl-aksyon ak definisyon fonksyon si ou vle.

modèl { deklarasyon aksyon }

Non Fonksyon ( lis paramèt ) { deklarasyon }

Gawk premye li sous pwogram lan nan dosye-dosye a (yo) si yo espesifye, ki soti nan agiman nan - sous , oswa soti nan agiman an premye ki pa opsyon sou liy lan bay lòd. Opsyon yo -f ak - resous kapab itilize plizyè fwa sou liy lan lòd. Gawk li tèks pwogram nan kòm si tout tèks pwogram- yo ak lòd liy sous te angaje yo ansanm. Sa a se itil pou bati bibliyotèk nan fonksyon AWK, san yo pa gen ladan yo nan chak nouvo pwogram AWK ki itilize yo. Li tou bay kapasite nan melanje fonksyon bibliyotèk ak pwogram liy lòd.

Anviwònman varyab AWKPATH espesifye yon rechèch rechèch pou itilize lè yo jwenn dosye sous ki rele ak -f opsyon an. Si varyab sa a pa egziste, chemen defo a se ".: / Usr / local / share / awk" . (Anyèl aktyèl la ka varye, depann sou ki jan gawk te konstwi ak enstale.) Si yon non dosye bay -f opsyon an gen yon karaktè `` / ', pa gen okenn rechèch chemen fè.

Gawk egzekite pwogram AWK nan lòd sa a. Premyèman, tout devwa varyab ki espesifye atravè -v opsyon an fèt. Apre sa, gawk konpile pwogram nan nan yon fòm entèn. Lè sa a, gawk ègzekutra kòd la nan BEGIN blòk la (s) (si genyen), ak Lè sa a, kontinye li chak dosye yo te rele nan ARGV etalaj la. Si pa gen okenn dosye yo te rele sou liy lan lòd, gawk li opinyon estanda a.

Si yon fichier sou liy lan lòd gen fòm var = val li trete kòm yon plasman varyab. Var a varyab yo pral asiyen Val valè a. (Sa rive apre nenpòt ki BEGIN blòk (yo) yo te kouri.) Pozisyon liy varyab varyab se pi itil pou dynamique plase valè nan varyab yo AWK sèvi ak kontwole ki jan opinyon yo kase nan jaden ak dosye. Li se tou itil pou kontwole eta si pas miltip yo bezwen sou yon dosye done sèl.

Si valè a nan yon eleman patikilye nan ARGV se vid ( "" ), gawk sote sou li.

Pou chak dosye nan opinyon an, tès gawk yo wè si li matche ak nenpòt modèl nan pwogram nan AWK. Pou chak modèl alimèt dosye a, aksyon an ki asosye egzekite. Modèl yo teste nan lòd yo rive nan pwogram nan.

Finalman, apre yo fin tout opinyon an fin itilize, gawk ègzekutra kòd la nan blòk la END (yo) (si genyen).

Varyab, dosye, ak jaden

AWK varyab yo dinamik; yo antre nan egzistans yo lè yo premye itilize yo. Valè yo se swa nimewo k ap flote-pwen oswa strings, oswa toude, depann sou ki jan yo itilize yo. AWK tou gen yon sèl dimansyon dimansyon; ranje ak dimansyon miltip yo ka simulation. Plizyè varyab pre-defini yo mete kòm yon pwogram kouri; sa yo pral dekri jan sa nesesè epi rezime pi ba a.

Dosye

Nòmalman, dosye yo separe pa karaktè nouvo liy. Ou ka kontwole ki jan dosye yo separe pa plase valè a bati-an varyab RS . Si RS se nenpòt karaktè sèl, ki karaktè separe dosye. Sinon, RS se yon ekspresyon regilye. Tèks nan opinyon ki matche ekspresyon regilye sa a separe dosye a. Sepandan, nan mòd konpatibilite, se sèlman karaktè nan premye nan valè fisèl li yo itilize pou separe dosye. Si RS la fikse kòd la nil, Lè sa a, dosye yo separe pa liy vid. Lè RS la fikse fisèl null la, karaktè nan liy lan toujou aji kòm yon separatè jaden, nan adisyon a tou sa valè FS ka genyen.

Jaden

Kòm chak dosye opinyon li, gawk divize dosye a nan jaden , lè l sèvi avèk valè a nan FS varyab la kòm sektè a jaden. Si FS se yon karaktè sèl, jaden yo separe pa sa karaktè. Si FS se fisèl nil a, chak karaktè endividyèl vin yon jaden separe. Sinon, FS espere se yon ekspresyon plen regilye. Nan ka espesyal la ke FS se yon espas sèl, jaden yo separe pa kouri nan espas ak / oswa onglè ak / oswa Newlines. (Men, wè diskisyon an nan - pozisyon , anba a). REMAK: Valè IGNORECASE (gade pi ba a) afekte kouman jaden yo fann lè FS se yon ekspresyon regilye, ak kijan dosye yo separe lè RS se yon ekspresyon regilye.

Si varyab FIELDWIDTHS yo mete nan yon lis espas ki separe nan nimewo, chak jaden espere gen fiks lajè, ak gawk divize moute dosye a lè l sèvi avèk lajè yo espesifye. Valè FS yo inyore. Bay yon nouvo valè nan FS dejis itilize nan FIELDWIDTHS , ak retabli konpòtman an default.

Chak jaden nan dosye a D 'ka referans pa pozisyon li, $ 1 , $ 2 , ak sou sa. $ 0 se dosye a tout antye. Jaden pa bezwen referans pa konstan:

n = 5
enprime $ n

simagri senkyèm jaden an nan dosye a D '.

NF la varyab se mete nan kantite total jaden nan dosye a D '.

Referans nan ki pa-inexistant jaden (sa vle di jaden apre $ NF ) pwodwi nil-fisèl la. Sepandan, asiyen nan yon jaden ki pa-inexistant (egzanp, $ (NF + 2) = 5 ) ogmante valè a nan NF , kreye nenpòt jaden entèveni ak fisèl la nil kòm valè yo, epi ki lakòz valè a $ 0 yo dwe recomputed, ak jaden yo ke yo separe pa valè OFS . Referans nan jaden nimer negatif lakòz yon erè fatal. Decrementing NF lakòz valè jaden ki pase nouvo valè a pou pèdi, ak valè $ 0 pou recomputed, ak jaden yo ke yo separe pa valè OFS .

Mete yon valè nan yon jaden ki egziste ki lakòz dosye a tout antye dwe rebati lè $ 0 se referans. Menm jan tou, bay yon valè nan $ 0 lakòz dosye a yo dwe rvant, kreye nouvo valè pou jaden yo.

Bati-an Varyab

Gawk bati-an varyab yo se:

ARGC

Nimewo a nan agiman liy lòd (pa gen ladan opsyon gawk , oswa sous pwogram lan).

ARGIND

Endèks la nan ARGV nan dosye aktyèl la ke yo te trete.

ARGV

Array nan lòd liy agiman. Se etalaj la Catalogue soti nan 0 a ARGC - 1. Dynamik chanje sa ki nan ARGV ka kontwole dosye yo itilize pou done.

BINMODE

Sou sistèm ki pa POSIX, espesifye itilizasyon mòd binè pou tout dosye I / O. Valè nimerik nan 1, 2, oswa 3, presize ki opinyon dosye, dosye pwodiksyon, oswa tout dosye, respektivman, yo ta dwe itilize binè I / O. Valè chèn nan "r" , oswa "w" presize ke opinyon dosye, oswa dosye pwodiksyon, respektivman, yo ta dwe itilize Binè I / O. Valè chèn nan "rw" oswa "Wr" presize ke tout dosye yo ta dwe itilize binè I / O. Nenpòt lòt valè fil se trete kòm "rw" , men jenere yon mesaj avètisman.

KONVFMT

Fòma a konvèsyon pou nimewo, "% .6g" , pa default.

ENVIRON

Yon etalaj ki gen valè anviwònman aktyèl la. Etalaj la Indexé pa varyab anviwònman yo, chak eleman yo te valè sa a varyab (egzanp, ENVIRON ["HOME"] ta ka / kay / arnold ). Chanje etalaj sa a pa afekte anviwònman an wè nan pwogram ki gawk spawns via redireksyon oswa sistèm () fonksyon an.

ERRNO

Si yon erè sistèm fèt swa fè yon redireksyon pou liy, pandan yon lekti pou liy, oswa pandan yon fèmen () , Lè sa a, ERRNO pral gen yon kòd ki dekri erè a. Valè a sijè a tradiksyon nan lokal ki pa angle.

FIELDWIDTHS

Yon lis blan-espas separe de fieldwidths. Lè mete, gawk analyse opinyon an nan jaden nan lajè fiks, olye pou yo sèvi ak valè a nan FS varyab la kòm sektè a jaden.

NON DOSYE

Non an nan dosye a opinyon kounye a. Si pa gen okenn dosye ki espesifye sou liy lan bay lòd, valè a nan FILENAME se `` - ''. Sepandan, FILENAME se endefini andedan blòk la BEGIN (sof si mete pa liy).

FNR

Dosye dosye nimerik nan dosye opinyon aktyèl la.

FS

Sektè a jaden D ', yon espas pa default. Gade jaden , pi wo a.

IGNORECASE

Kontwole ka-sansiblite nan tout ekspresyon regilye ak operasyon fisèl. Si IGNORECASE gen yon valè ki pa zero, Lè sa a, konparezon ak kòd ak modèl matche nan règleman, divize jaden ak FS , dosye ki separe ak RS , ekspresyon regilye matche ak ~ ak ! ~ , Ak gensub la () , gsub () , endèks () , matche ak () , fann () , ak sub () fonksyon bati-an tout ka inyore lè y ap fè operasyon ekspresyon regilye. REMAK: Abònman pou abòde pa afekte, ni se asòt () fonksyon an.

Se konsa, si IGNORECASE pa egal a zewo, / aB / alimèt tout strings "ab" , "aB" , "Ab" , ak "AB" . Menm jan ak tout varyab AWK, valè inisyal la nan IGNORECASE se zewo, kidonk tout ekspresyon regilye ak operasyon fisèl yo nòmalman ka-sansib. Anba UNIX, tout seri ISO 8859-1 Laten-1 itilize lè yo inyore ka a.

LINT

Bay kontwòl dinamik nan opsyon nan --lint soti nan yon pwogram AWK. Lè vrè, gawk simagri pousyè avètisman yo. Lè fo, li pa fè sa. Lè asiyen valè fisèl la "fatal" , avètisman pousye yo vin erè fatal, egzakteman tankou --lint = fatal . Nenpòt lòt valè vre jis simagri avètisman.

NF

Nimewo a nan jaden nan dosye aktyèl la D '.

NR

Kantite total dosye D 'yo wè byen lwen tèlman.

OFMT

Fòma pwodiksyon an pou nimewo, "% .6g" , pa default.

OFS

Sektè a jaden pwodiksyon, yon espas pa default.

OSWA

Sektè a dosye pwodiksyon, pa default yon ligne.

PROCINFO

Eleman sa a etalaj bay aksè a enfòmasyon sou pwogram nan AWK kouri. Sou kèk sistèm, gen pouvwa gen eleman nan etalaj la, "group1" nan "gwoup n " pou kèk n , ki se kantite gwoup siplemantè ke pwosesis la gen. Sèvi ak nan operatè a pou tès pou eleman sa yo. Eleman sa yo garanti yo dwe disponib:

PROCINFO ["siid"]

valè sistèm rele getegid (2).

PROCINFO ["euid"]

valè geteuid (2) rele sistèm lan.

PROCINFO ["FS"]

"FS" si jaden divize ak FS se an efè, oswa "FIELDWIDTHS" si jaden divize ak FIELDWIDTHS an efè.

PROCINFO ["gid"]

valè a nan rele nan sistèm Getgid (2).

PROCINFO ["pgrpid"]

ID gwoup pwosesis la nan pwosesis aktyèl la.

PROCINFO ["PID"]

ID pwosesis la nan pwosesis aktyèl la.

PROCINFO ["ppid"]

ID pwosesis paran an nan pwosesis aktyèl la.

PROCINFO ["uid"]

valè a nan rele la (2) rele sistèm.

RS

Dosye a D 'dosye, pa default yon nouvo liy.

RT

Terminator nan dosye. Gawk kouche RT nan tèks la opinyon ki matche karaktè a oswa ekspresyon regilye espesifye pa RS .

RSTART

Endèks la nan karaktè nan premye matche pa match () ; 0 si pa gen matche ak. (Sa vle di endis karaktè yo kòmanse nan yon sèl.)

RLENGTH

Longè fisèl la matche pa match () ; -1 si pa gen okenn matche ak.

SUBSEP

N. a itilize yo separe abonnés miltip nan eleman etalaj, pa default "\ 034" .

TEXTDOMAIN

Domèn tèks pwogram AWK; itilize pou jwenn tradiksyon lokal yo pou strings pwogram lan.

Arrays

Array yo abònen ak yon ekspresyon ant parantèz kare ( [ ak ] ). Si ekspresyon an se yon lis ekspresyon ( expr , expr ...) Lè sa a, abonnable nan etalaj se yon fisèl ki gen ladan nan koneksyon nan valè a (fisèl) chak ekspresyon, separe pa valè a nan varyab la SUBSEP . Sa a se etablisman itilize simulation miltipliye dimansyon etalaj. Pa egzanp:

mwen = "A"; j = "B"; k = "C"
x [mwen, j, k] = "hello, mond \ n"

asiyen fisèl la "hello, mond \ n" nan eleman nan x la etalaj ki se Catalogue pa fisèl la "A \ 034B \ 034C" . Tout etalaj nan AWK se asosyatif, sa vle di endike pa valè fisèl.

Operatè a espesyal nan ka itilize nan yon si ou oswa pandan y ap deklarasyon yo wè si yon etalaj gen yon endèks ki gen ladan yon valè patikilye.

si (val nan etalaj) enprime etalaj [val]

Si etalaj la gen abonnés miltip, itilize (mwen, j) nan etalaj .

Yo ka itilize nan konstwi tou nan yon rib pou iterasyon sou tout eleman yon etalaj.

Yon eleman ka efase nan yon etalaj lè l sèvi avèk deklarasyon an efase . Ka deklarasyon an efase tou dwe itilize efase tout sa ki nan yon etalaj, jis pa ki espesifye non an etalaj san yon abonnés.

Varyab Typing ak konvèsyon

Varyab ak jaden yo ka (pwen k ap flote), oswa strings, oswa toude. Ki jan valè a nan yon varyab se entèprete depann sou kontèks li yo. Si yo itilize li nan yon ekspresyon nimerik, yo pral trete li kòm yon nimewo, si yo itilize kòm yon kòd li pral trete kòm yon kòd.

Pou fòse yon varyab ki dwe trete kòm yon nimewo, ajoute 0 nan li; fòse li dwe trete kòm yon fisèl, anplwaye li ak fisèl la nil.

Lè yon kòd dwe konvèti nan yon nimewo, konvèsyon an akonpli lè l sèvi avèk strtod (3). Yon nimewo konvèti nan yon fisèl lè l sèvi avèk valè CONVFMT kòm yon fòma fisèl pou sprintf (3), ak valè nimerik varyab la kòm agiman an. Sepandan, menm si tout nimewo nan AWK yo se k ap flote-pwen, valè entegral yo toujou konvèti kòm nonm antye. Se konsa, yo bay yo

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

b a varyab gen yon valè fisèl nan "12" epi yo pa "12.00" .

Gawk fè konparezon jan sa a: Si de varyab yo nimerik, yo konpare nimerik. Si yon sèl valè se nimerik ak lòt la gen yon valè fisèl ki se yon "kòd nimerik," Lè sa a, konparezon yo tou fè nimerik. Sinon, valè a nimerik konvèti nan yon fisèl ak yon konparezon string fèt. De strings yo konpare, nan kou, tankou strings. Remake byen ke estanda POSIX la aplike konsèp nan "kòd nimerik" tout kote, menm nan konstan konsènan kòd. Sepandan, sa a se byen klè kòrèk, ak gawk pa fè sa. (Erezman, sa a se fiks nan vèsyon an pwochen nan estanda la.)

Remake byen ke konstans fisèl, tankou "57" , yo pa strings nimerik yo, yo se konstan konte. Lide a nan "kòd nimerik" sèlman aplike nan jaden, opinyon liy, FILENAME , eleman ARGV , eleman ENVIRON ak eleman ki nan yon etalaj ki te kreye pa fann () sa yo se strings nimerik. Lide debaz la se ke D 'itilizatè , epi sèlman opinyon itilizatè, ki sanble nimerik, yo ta dwe trete ke fason.

Varyab inisyalize gen valè 0 ak valè fisèl la "" (nil, oswa vid, fisèl).

Konstan oktal ak ekzadesimal

Kòmanse ak vèsyon 3.1 nan gawk, ou ka sèvi ak C-style octal ak konstan èksadecimal nan kòd sous pwogram AWK ou a. Pou egzanp, valè octal 011 a egal a 9 desimal, e valè ekzadesimal 0x11 egal a 17 an.

Konstran fisèl

Konstan fisèl nan AWK se sekans nan karaktè ki fèmen ant quotes doub ( " ). Nan strings, sekans chape sèten yo rekonèt, tankou nan C. Sa yo se:

\\

Yon backslash literal.

\ a

'Alèt' karaktè a; anjeneral karaktè ASCII BEL la.

\ b

backspace.

\ f

fòm-manje.

\ n

Newline.

\ r

chay retounen.

\ t

tab orizontal.

\ v

vètikal tab.

\ x hex chifes

Karaktè a reprezante pa fisèl la nan chif ekzadesimal swiv \ x la . Kòm nan ANSIC, tout sa yo ekzadesimal chif yo konsidere kòm yon pati nan sekans nan chape. (Karakteristik sa a ta dwe di nou yon bagay sou konsepsyon langaj pa komite.) Eg, "\ x1B" se karaktè ASCIIESC (chape).

\ ddd

Karaktè a reprezante pa sekans 1-, 2-, oswa 3-chif nan chif octal. Eg, "\ 033" se ASCII ESC (chape) karaktè la.

\ c

N. literal c .

Sekans chape yo ka itilize tou andedan ekspresyon regilye regilye (egzanp, / [\ t \ f \ n \ r \ v] / alimèt karaktè whitespace).

Nan mòd konpatibilite, karaktè yo ki reprezante pa oktal ak ekzadesimal sekans sekans yo trete literalman lè yo itilize nan konstan konsènan ekspresyon regilye. Se konsa, / yon \ 52b / ki ekivalan a / yon \ b / .

Modèl ak aksyon

AWK se yon lang oryante lang. Modèl la vini an premye, ak Lè sa a, aksyon an. Deklarasyon aksyon yo fèmen nan { ak } . Swa modèl la ka manke, oswa aksyon an ka manke, men, nan kou, pa tou de. Si modèl la ki manke, aksyon an egzekite pou chak dosye sèl nan opinyon. Yon aksyon ki manke se ekivalan a

{enprime}

ki simagri dosye a tout antye.

Kòmantè kòmanse ak pèsonaj la `` ', epi kontinye jouk nan fen liy lan. Liy ki vid yo kapab itilize pou deklarasyon separe yo. Nòmalman, yon deklarasyon fini ak yon nouvo liy, sepandan, sa a se pa ka a pou liy ki fini nan yon ``, '', { , ? , : , && , oswa || . Liy ki fini nan oswa lòt moun tou gen deklarasyon yo otomatikman kontinye sou liy sa a. Nan lòt ka, yo ka kontinye yon liy lè yo fini li ak yon ', nan ka sa a pral Newline la pral inyore.

Deklarasyon miltip yo ka mete sou yon sèl liy pa separe yo ak yon ``; ''. Sa a aplike a tou de deklarasyon yo nan pati nan aksyon nan yon pè-modèl aksyon (ka a abityèl), ak aksyon yo modèl-aksyon tèt yo.

Modèl

Modèl AWK ka youn nan bagay sa yo:

PÈSONÈL END / regilye ekspresyon / relasyon ekspresyon modèl & modèl modèl || modèl modèl ? modèl : modèl ( modèl ) ! modèl pattern1 , pattern2

KÒD ak fen yo se de kalite espesyal nan modèl ki pa yo teste kont opinyon an. Pati nan aksyon nan tout modèl BEGIN yo fizyone tankou si tout deklarasyon yo te ekri nan yon blòk BEGIN sèl. Yo ap egzekite anvan nenpòt nan opinyon an li. Menm jan tou, tout blòk yo END fizyone, ak egzekite lè tout opinyon an fin itilize (oswa lè yon deklarasyon sòti egzekite). PÈSONÈL ak modèl END pa ka konbine avèk lòt modèl nan ekspresyon modèl. PÈSONÈL ak modèl fen yo pa ka gen pati aksyon ki manke.

Pou / ekspresyon regilye / modèl, se deklarasyon an ki asosye egzekite pou chak dosye D 'ki matche ak ekspresyon regilye a. Ekspresyon regilye yo se menm ak sa yo ki nan èrep (1), epi yo rezime pi ba a.

Yon ekspresyon relasyon ka itilize nenpòt nan operatè yo defini anba a nan seksyon an sou aksyon yo. Sa yo jeneralman tès si wi ou non sèten jaden matche ak sèten ekspresyon regilye.

&& , | , ak ! operatè yo lojik AND, lojik OSWA, ak lojik PA, respektivman, tankou nan C. Yo fè evalyasyon kout sikwi, tou tankou nan C, epi yo itilize pou konbine ekspresyon plis modèl primitif. Kòm nan pifò lang, parantèz yo kapab itilize pou chanje lòd evalyasyon an.

Operatè a se tankou operatè a menm nan C. Si modèl nan premye se verite Lè sa a, modèl la itilize pou fè tès se modèl, dezyèm lan, otreman li se twazyèm lan. Se sèlman youn nan modèl yo dezyèm ak twazyèm evalye.

Modèl1 a , fòm pattern2 nan yon ekspresyon yo rele yon modèl ranje . Li matche tout dosye opinyon kòmanse avèk yon dosye ki matche modèl1 , ak kontinye jiskaske yon dosye ki matche pattern2 , enklizif. Li pa konbine ak nenpòt sòt lòt nan ekspresyon modèl.

Ekspresyon regilye

Ekspresyon regilye yo se kalite pwolonje yo te jwenn nan egrep . Yo konpoze de karaktè jan sa a:

c

matche ak non-metacharacter a c .

\ c

alimèt karaktè literal c .

.

alimèt nenpòt karaktè ki gen ladan ligne.

^

matche ak nan konmansman an nan yon fisèl.

$

alimèt nan fen yon fisèl.

[ abc ... ]

karaktè lis, alimèt nenpòt nan karaktè yo abc ....

[^ abc ... ]

negate lis karaktè, alimèt nenpòt karaktè eksepte abc ....

r1 | r2

altènatif: alimèt swa r1 oswa r2 .

r1r2

concatenation: alimèt r1 , ak Lè sa a, r2 .

r +

alimèt youn oswa plis r .

r *

alimèt zewo oswa plis r .

r ?

alimèt zewo oswa yon sèl r .

( r )

gwoupman: alimèt r .

r { n }

r { n ,}

R { n , m } Youn oswa de nimewo andedan aparèy òtopedik ki endike yon ekspresyon entèval . Si gen yon nimewo nan aparèy òtopedik yo, repetisyon regilye anvan an repete n fwa. Si gen de nimewo ki separe pa yon vigil, r repete n nan fwa m . Si gen yon nimewo ki te swiv pa yon vigil, Lè sa a, r se repete omwen n fwa.

Entèval entèval yo disponib sèlman si swa --pozisyon oswa --re-entèval se espesifye sou liy lan lòd.

\ y

matche ak fisèl la vid nan swa kòmansman an oswa nan fen yon mo.

\ B

alimèt fisèl vid la nan yon mo.

\ <

alimèt fisèl vid la nan kòmansman yon mo.

\>

alimèt fisèl vid la nan fen yon mo.

\ w

matche ak nenpòt karaktè mo-konstitiyan (lèt, chif, oswa souliye).

\ W

matche ak nenpòt karaktè ki pa mo-konstitiyan.

\ "

alimèt fisèl vid la nan kòmansman yon tanpon (fisèl).

\ "

alimèt fisèl vid la nan fen yon tanpon.

Sekans yo chape ki valab nan konstan tanporè (gade anba a) yo valab tou nan ekspresyon regilye.

Kou karaktè yo se yon karakteristik nouvo prezante nan estanda POSIX la. Yon klas karaktè se yon notasyon espesyal pou dekri lis karaktè ki gen yon atribi espesifik, men kote karaktè yo reyèl tèt yo ka varye soti nan peyi nan peyi ak / oswa nan karaktè mete nan seri karaktè. Pou egzanp, nosyon de sa ki se yon karaktè alfabè diferan nan USA a ak an Frans.

Yon klas karaktè se sèlman valab nan yon ekspresyon regilye andedan parantèz yo nan yon lis karaktè. Kou karaktè konpoze de [: , yon mo kle ki endike klas la, epi :] . Klas karaktè yo defini nan estanda POSIX la se:

[: alnum:]

Karaktè Alphanumeric.

[: alfa:]

Karaktè alfabè.

[: vid:]

Espas oswa karaktè tab.

[: cntrl:]

Kontwòl karaktè.

[: chif:]

Karaktè Numerik.

[: graf:]

Karaktè ki tou de enprime ak vizib. (Yon espas ki enprime, men se pa vizib, pandan y ap yon yon tou de.)

[: pi ba:]

Lower-ka karaktè alfabè.

[: enprime:]

Karaktè Printable (karaktè ki pa karaktè kontwòl.)

[: ponk:]

Karaktè ponktiyasyon (karaktè ki pa lèt, chif, karaktè kontwòl, oswa karaktè espas).

[: espas:]

Karaktè Espas (tankou espas, tab, ak formfeed, nan non yon kèk).

[: anwo:]

Upper-ka karaktè alfabè.

[: xdigit:]

Karaktè ki se chif ekzadesimal.

Pou egzanp, anvan estanda a POSIX, matche ak karaktè alphanumerik, ou ta dwe te ekri / [A-Za-z0-9] / . Si seri karaktè ou te gen lòt karaktè alfabè nan li, sa a pa ta matche ak yo, epi si karaktè ou mete collated yon fason diferan soti nan ASCII, sa a pa ta ka menm matche ak karaktè yo alphanumeric ASCII. Ak klas yo karaktè POSIX, ou ka ekri / [[: alnum:]] / , ak sa a alimèt karaktè yo alfabè ak nimerik nan seri karaktè ou.

De sekans adisyonèl espesyal ka parèt nan lis karaktè. Sa yo aplike nan ki pa Peye-ASCII ansanm karaktè, ki ka gen senbòl sèl (yo rele eleman kolye ) ki reprezante ki gen plis pase yon karaktè, osi byen ke plizyè karaktè ki ekivalan pou kolye , oswa klasman, objektif. (Eg, an franse, yon plenn `` e '' ak yon ewa grav-aksantye yo se ekivalan.)

Kolye senbòl

Yon senbòl kolaj se yon eleman eleman milti-karaktè ki fèmen nan [. ak ]] . Pou egzanp, si ch se yon eleman kolatif, Lè sa a, [[.ch.]] Se yon ekspresyon regilye ki matche eleman sa a eleman, pandan [ch] se yon ekspresyon regilye ki matche ak swa c oswa h .

Ekivalans Klas

Yon klas ekivalans se yon non lokal espesifik pou yon lis karaktè ki ekivalan. Non an fèmen nan [= ak =] . Pa egzanp, non yo ka itilize pou reprezante tout "e", "e", "e" e "." Nan ka sa a, [[= = =]] se yon ekspresyon regilye matche ak nenpòt nan e , e ' , oswa e` .

Karakteristik sa yo trè enpòtan nan lokal ki pale angle. Fonksyon bibliyotèk ki gawk itilize pou ekspresyon regilye matche kounye a sèlman rekonèt klas karaktè POSIX; yo pa rekonèt kolòn senbòl oswa klas ekivalans.

\ \ , \ B , \ B , \ W , \ W , \ ,, ak \ ' operatè yo espesifik pou gawk ; yo ekstansyon ki baze sou enstalasyon nan bibliyotèk ekspresyon regilye GNU yo.

Opsyon yo divès liy lòd kontwole ki jan gawk entèprete karaktè nan ekspresyon regilye.

Pa gen opsyon

Nan ka a default, gawk bay tout fasilite yo nan ekspresyon POSIX regilye ak operatè yo GNU ekspresyon regilye dekri pi wo a. Sepandan, ekspresyon entèval yo pa sipòte.

--Pozisyon

Se sèlman POSIX ekspresyon regilye yo sipòte, operatè yo GNU yo pa espesyal. (Eg, \ w alimèt yon literal w ). Entèval entèval yo gen dwa.

- tradisyonèl

Tradisyonèl UNIX awk regilye ekspresyon yo matche. Operatè yo GNU yo pa espesyal, entèval ekspresyon yo pa disponib, e ni yo pa klas yo karaktè POSIX ( [[: alnum:]] ak sou sa). Karaktè ki dekri nan sekans octal ak ekzadesimal chape yo trete literalman, menm si yo reprezante ekspozisyon regilye metacharacters.

-re-entèval

Pèmèt ekspresyon entèval nan ekspresyon regilye, menm si - tradisyonèl yo te bay.

Aksyon

Deklarasyon aksyon yo fèmen nan aparèy òtopedik, { ak } . Deklarasyon Aksyon konpoze de devwa abityèl yo, deklarasyon kondisyonèl, ak louping ki te jwenn nan pifò lang yo. Operatè yo, deklarasyon kontwòl, ak deklarasyon opinyon / pwodiksyon ki disponib yo modele apre sa yo ki nan C.

Operatè

Operatè yo nan AWK, nan lòd diminye priyorite, yo

( ... )

Gwoupman

$

Referans jaden.

++ -

Ogmantasyon ak rediksyon, tou de prefiks ak postfix.

^

Eksponentasyon ( ** ka sèvi tou, ak ** = pou operatè a plasman).

+ -!

Unary plis, unary mwens, ak negasyon lojik.

* /%

Miltiplikasyon, divizyon, ak modil.

+ -

Adisyon ak soustraksyon.

espas

Chèn konkatasyon.

<>

<=> =

! = == Operatè regilye relasyon yo.

~! ~

Regilye ekspresyon matche ak, negated matche ak. REMAK: Pa itilize yon ekspresyon regilye regilye ( / foo / ) sou bò gòch la nan yon ~ oswa ! ~ . Sèvi ak yon sèl sou bò dwat la. Ekspresyon / foo / ~ exp gen siyifikasyon an menm jan (($ 0 ~ / foo /) ~ exp ) . Sa a se anjeneral pa sa ki te fèt.

nan

Anplwaye manm.

&&

Lojik AK.

||

Lojik OSWA.

?:

C ekspresyon an kondisyonèl. Sa a gen fòm expr1 a ? expr2 : expr3 . Si expr1 se vre, valè ekspresyon an se expr2 , otreman li expr3 . Se sèlman youn nan expr2 ak expr3 evalye.

= = = = =

* = / =% = ^ = Plasman. Tou de devwa absoli ( var = valè ) ak operatè-plasman (lòt fòm yo) yo sipòte.

Kontwòl Stat

Deklarasyon yo kontwòl yo jan sa a:

Si deklarasyon ( kondisyon ) deklare deklarasyon an pandan ke ( kondisyon ) pou deklarasyon ( expr1 ; expr2 ; expr3 ) pou ( var nan etalaj ) deklarasyon repo kontinye efase array [ endèks ] efase sòti etalaj [ ekspresyon ] { deklarasyon }

Mwen / O Deklarasyon yo

Deklarasyon yo D '/ pwodiksyon yo jan sa a:

fèmen ( dosye [ , ki jan ] )

Fèmen dosye, tiyo oswa ko-pwosesis. Si ou ta dwe itilize sèlman lè ou fèmen youn nan fen yon tiy de fason pou yon ko-pwosesis. Li dwe yon valè fisèl, swa "nan" oswa "nan" .

liy

Mete $ 0 nan dosye D 'pwochen; mete NF , NR , FNR .

liy < file

Mete $ 0 nan dosye pwochèn dosye ; mete NF .

jwenn liy var

Mete var soti nan dosye D 'pwochen; mete NR , FNR .

Getline var < dosye

Mete var soti nan dosye pwochèn nan dosye .

lòd | jwenn [ var ]

Kouri lòd kanalizasyon pwodiksyon an swa nan $ 0 oswa var , tankou pi wo a.

lòd | & getline [ var ]

Kouri lòd kòm yon ko-pwosesis kanalizasyon pwodiksyon an swa nan $ 0 oswa var , tankou pi wo a. Ko-pwosesis yo se yon ekstansyon gawk .

pwochen

Sispann otomatik dosye D 'aktyèl la. Dosye D 'pwochen se li ak pwosesis kòmanse sou ak modèl an premye nan pwogram nan AWK. Si yo rive nan fen done yo opinyon, blòk la END (yo), si genyen, yo egzekite.

pwochen dosye

One Stop pwosesis dosye aktyèl la. Dosye opinyon nan pwochen li soti nan dosye a opinyon pwochen. FILENAME ak ARGIND yo mete ajou, FNR se Reyajiste nan 1, ak pwosesis kòmanse ak modèl an premye nan pwogram nan AWK. Si yo rive nan fen done yo opinyon, blòk la END (yo), si genyen, yo egzekite.

enprime

Ekri dosye aktyèl la. Se dosye pwodiksyon an sispann ak valè varyab ORS la .

enprime ekspr-lis

Ekriven ekspresyon. Chak ekspresyon separe pa valè varyab OFS la . Se dosye pwodiksyon an sispann ak valè varyab ORS la .

enprime ekspr-lis > dosye

Ekriven ekspresyon sou dosye . Chak ekspresyon separe pa valè varyab OFS la . Se dosye pwodiksyon an sispann ak valè varyab ORS la .

printf fmt, ekspr-lis

Fòma ak enprime.

printf fmt, ekspr-lis > dosye

Fòma ak enprime nan dosye .

sistèm ( cmd-liy )

Ekzekite kòmandman an cmd-liy , epi retounen estati a sòti. (Sa ka pa disponib sou sistèm ki pa POSIX.)

fflush ( [ dosye ] )

Pouvwa tout tanpon ki asosye ak dosye pwodiksyon an ouvè oswa dosye tiyo. Si dosye ki manke, Lè sa a estanda pwodiksyon se wouj. Si dosye a se fisèl la nil, Lè sa a, tout dosye pwodiksyon louvri ak tiyo yo gen tanpon yo flushed.

Lòt redireksyon pwodiksyon yo gen dwa pou enprime ak printf .

enprime ... >> dosye

rantre pwodiksyon nan dosye a .

enprime ... | lòd

ekri sou yon tiyo.

enprime ... | & lòd

voye done nan yon ko-pwosesis.

Ranbousman an ranje retounen 0 sou fen dosye ak -1 sou yon erè. Lè yon erè, ERRNO gen yon kòd ki dekri pwoblèm nan.

REMAK: Si wap itilize yon tiyo oswa yon ko-pwosesis pou ou fè liy, oswa nan enprime oswa printf nan yon riban, ou dwe itilize fèmen () pou kreye nouvo ka nan lòd la. AWK pa otomatikman fèmen tiyo oswa ko-pwosesis lè yo retounen EOF.

Deklarasyon an printf

AWK vèsyon deklarasyon printf la ak sprintf () fonksyon (gade anba a) aksepte fòma espesifikasyon konvèsyon sa yo:

c

Yon karaktè ASCII. Si agiman an itilize pou % c se nimerik, li trete kòm yon karaktè ak enprime. Sinon, se agiman an sipoze yo dwe yon fisèl, epi se sèlman karaktè a premye nan ki fisèl enprime.

d , mwen

Yon nimewo desimal (nonb antye relatif la).

e, E

Yon nimewo pwen k ap flote nan fòm lan [-] d.dddddde [+ -] dd . Fòma E itilize i olye e .

f

Yon nimewo pwen k ap flote nan fòm lan [-] ddd.dddddd .

g, G

Sèvi ak % e oswa konvèsyon F , kèlkeswa sa ki pi kout, ak zewo nonsignificant siprime. Fòma G a itilize E olye e .

o

Yon nimewo octal siye (tou yon nonb antye relatif).

u Yon nimewo siy siyen (ankò, yon nonb antye relatif).

s

Yon fisèl karaktè.

x, X

Yon nonmen non ekzadesimal (yon nonb antye relatif). Fòma X a itilize ABCDEF olye pou yo abcdef .

%%

Yon sèl karaktè; pa gen okenn agiman konvèti.

Opsyonèl, paramèt adisyonèl pouvwa kouche ant % nan ak lèt ​​la kontwòl:

konte $

Sèvi ak agiman konte a nan pwen sa a nan fòma a. Yo rele sa yon spesifikasyon positional epi li gen entansyon premyèman pou itilize nan tradui vèsyon nan strings fòma, pa nan tèks orijinal la nan yon pwogram AWK. Li se yon ekstansyon gawk .

-

Ekspresyon an ta dwe kite-jistifye nan jaden li yo.

espas

Pou konvèsyon nimerik, prefiks valè pozitif ak yon espas, ak valè negatif ak yon siy mwens.

+

Siyen la plis, yo itilize anvan modifye lajè (gade anba a), di toujou bay yon siy pou konvèsyon nimerik, menm si done yo dwe fòma se pozitif. A + dépassions modifier la espas.

#

Itilize yon fòm altènatif pou sèten lèt kontwòl. Pou % o , bay yon zewo dirijan. Pou x , ak X , bay yon dirijan 0x oswa 0X pou yon rezilta nonzero. Pou % e , % E , ak % f , rezilta a toujou gen yon pwen desimal. Pou % g , ak G , fin zewo yo pa retire nan rezilta a.

0

Yon dirijan 0 (zewo) aji kòm yon drapo, ki endike pwodiksyon yo ta dwe Matlasye ak zero olye pou yo espas. Sa a aplike menm nan fòma ki pa-nimerik pwodiksyon. Sa a drapo sèlman gen yon efè lè lajè jaden an se pi laj pase valè a yo dwe enprime.

lajè

Yo ta dwe ranje jaden an nan lajè sa a. Se jaden an nòmalman Matlasye ak espas. Si gen 0 drapo a te itilize, li se Matlasye ak zero.

. pre

Yon nimewo ki presize presizyon pou itilize lè enprime. Pou % e , % E , ak % f fòma, sa a presize kantite chif ou vle enprime sou bò dwat nan pwen an desimal. Pou g a , ak G fòma, li presize kantite maksimòm chif siyifikatif. Pou % d , % o , % mwen , % u , x , ak X fòma, li presize kantite minimòm chif yo enprime. Pou % s , li presize kantite maksimòm de karaktè soti nan fisèl la ki ta dwe enprime.

Lajè dinamik ak kapasite preskit nan ANSI C printf () woutin yo sipòte. Yon * nan plas swa lajè a oswa pres espesifikasyon ki lakòz valè yo dwe pran nan lis la diskisyon printf oswa sprintf () . Pou itilize yon espesifik pozisyon ak yon dyamèt dinamik oswa presizyon, bay konte a $ apre * a nan fisèl la fòma. Pa egzanp, "% 3 $ * 2 $. * 1 $ s" .

Non File Espesyal

Lè yo fè I / O redireksyon nan swa enprime oswa printf nan yon dosye, oswa via liy ki soti nan yon dosye, gawk rekonèt sèten fichye espesyal intern. Fichier sa yo pèmèt aksè a deskriptè louvri dosye eritye nan pwosesis paran gawk a (anjeneral koki a). Non dosye sa yo ka itilize tou sou liy la bay lòd pou non dosye done. Fichier yo se:

/ dev / stdin

D 'estanda a.

/ dev / stdout

Pwodiksyon estanda a.

/ dev / stderr

Pwodiksyon an erè estanda.

/ dev / fd / n

Dosye a ki asosye ak deskriptè dosye a louvri n .

Sa yo se patikilyèman itil pou mesaj erè. Pa egzanp:

enprime "Ou kònen li!" > "/ dev / stderr"

Lè nou konsidere ke ou ta gen pou yo itilize

enprime "Ou kònen li!" | "chat 1> & 2"

Fichye espesyal sa yo ka itilize avèk & | ko-pwosesis operatè pou kreye koneksyon tchp / IP.

/ inet / tcp / lport / rhost / rport

Dosye pou koneksyon tchp / IP sou pò lokal pò nan rhost lame aleka sou pò aleka RPORT . Sèvi ak yon pò nan 0 gen sistèm lan chwazi yon pò.

/ inet / udp / lport / rhost / rport

Menm jan an, men sèvi ak UDP / IP olye pou yo tchp / IP.

/ inet / raw / lport / rhost / rport

Rezève pou itilizasyon nan lavni.

Lòt fichye espesyal bay aksè a enfòmasyon sou pwosesis la gawk kouri. Fichye sa yo yo kounye a se demode. Sèvi ak etalaj PROCINFO pou jwenn enfòmasyon yo bay yo. Fichier yo se:

/ dev / pid

Lekti dosye sa a retounen ID pwosesis la nan pwosesis aktyèl la, nan desimal, sispann ak yon nouvo liy.

/ dev / ppid

Lekti dosye sa a retounen ID pwosesis paran an nan pwosesis aktyèl la, nan desimal, sispann ak yon nouvo liy.

/ dev / pgrpid

Lekti dosye sa a retounen ID gwoup pwosesis la nan pwosesis aktyèl la, nan desimal, sispann ak yon nouvo liy.

/ dev / itilizatè

Lekti dosye sa a retounen yon dosye sèl sispann ak yon nouvo liy. Jaden yo ap separe ak espas. $ 1 se valè sistèm callet (2), $ 2 se valè sistèm geteuid (2), $ 3 se valè sistèm rele getgid (2), epi $ 4 se valè datè a (2) sistèm rele. Si gen lòt jaden, yo idantite gwoup yo te retounen pa getgroups (2). Gwoup miltip pa ka sipòte sou tout sistèm yo.

Fonksyon nimerik

AWK gen fowòm aritmetik bati-an:

atan2 ( y , x )

Retounen arctangent y / x nan radyan.

kos ( ekspr )

Retounen kosin nan ekspr , ki se nan radyan.

exp ( ekspr )

Fonksyon eksponansyèl la.

int ( ekspr )

Truncates integer.

log ( ekspr )

Fonksyon logaritm natirèl la.

rand ()

Retounen yon nimewo o aza ant 0 ak 1.

peche ( ekspr )

Retounen sinis la nan ekspr , ki se nan radyan.

sqrt ( ekspr )

Fonksyon rasin kare.

srand ( [ expr ] )

Itilize ekspr kòm yon grenn nouvo pou dèlko a nimewo o aza. Si se pa ekspresyon bay, se lè a nan jou yo itilize. Valè retounen an se grenn anvan an pou dèlko chif o aza.

Fonksyon chèn

Gawk gen fonksyon fisèl bati sa yo:

asòt ( s [ , d ] )

Retounen kantite eleman nan etalaj sous la. Sa ki nan s yo Ranje avèk règ nòmal gawk a pou konpare valè yo, ak endis yo nan valè yo Ranje nan s yo ranplase ak nonm antye sekans kòmanse ak 1. Si etalaj la destinasyon si ou vle espesifye, Lè sa a , s premye kopi nan d , ak Lè sa a, d se Ranje, kite endis yo nan etalaj la sous la chanje.

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

Search sib fisèl la t pou alimèt nan ekspresyon regilye a. Si h se yon kòmansman fisèl ak g oswa G , lè sa a ranplase tout alimèt nan r ak s . Sinon, h se yon nimewo ki endike ki matche ak r ranplase. Si t pa apwovizyone, yo itilize $ 0 olye. Nan seksyon tèks ranplasman an , seksyon n , kote n se yon chif ant 1 a 9, yo ka itilize pou endike jis tèks la ki koresponn ak subpresyon nè adolesan yo. Sekans lan \ 0 reprezante tèks la tout matche, menm jan karaktè a & . Kontrèman ak sub () ak gsub () , se kòd la modifye retounen kòm rezilta nan fonksyon an, ak fisèl sib orijinal la pa chanje.

gsub ( r , s [ , t ] )

Pou chak substring ki koresponn ak ekspresyon regilye a nan t a fisèl, ranplase fisèl la, epi retounen kantite ranplasman. Si t pa apwovizyone, sèvi ak $ 0 . Yon & nan tèks ranplasman an ranplase ak tèks la ki te aktyèlman matche. Sèvi ak \ & yo ka resevwa yon literal & . (Sa a dwe tape kòm "\\ &" ; wè GAWK: Efektif AWK Programming pou yon diskisyon pi konplè nan règleman yo pou & yo ak backslashes nan tèks ranplasman nan sub () , gsub () , ak gensub () .)

endèks ( s , t )

Retounen endèks la nan kòd la fisèl nan fisèl la, oswa 0 si t pa prezan. (Sa vle di endis karaktè yo kòmanse nan yon sèl.)

longè ( [ s ] )

Retounen longè fisèl la , oswa longè $ 0 si s pa apwovizyone.

matche ak ( s , r [ , yon ] )

Retounen pozisyon an nan kote ekspresyon regilye a r rive, oswa 0 si r pa prezan, ak kouche valè yo nan RSTART ak RLENGTH . Remake ke lòd agiman an se menm ak pou operatè a: str . Si yo bay yon etalaj, yon klarèt epi eleman 1 jiska n yo ranpli ak pòsyon yo nan sa ki matche ak korespondan subpresyon an parantèz nan r . Eleman 0'th nan yon gen pòsyon nan matche pa tout ekspresyon regilye a.

fann ( s , yon [ , r ] )

Divize fisèl la s nan etalaj la yon sou r la ekspresyon regilye, epi li retounen kantite jaden. Si r omisyon, FS yo itilize olye. Etalaj la se otorize an premye. Pataje konpòte li menm jan ak divizyon jaden, ki dekri anwo a.

sprintf ( fmt , ekspr -lis )

Ekran ekspr-lis dapre fmt , epi retounen fisèl la ki kapab lakòz.

strtonum ( str )

Egzamine str , epi retounen valè nimerik li yo. Si str kòmanse ak yon dirijan 0 , strtonum () sipoze ke str se yon nimewo octal. Si str kòmanse ak yon dirijan 0x oswa 0X , strtonum () sipoze ke str se yon nimewo ekzadesimal.

sub ( r , s [ , t ] )

Jis tankou gsub () , men se sèlman premye substring ki matche a ranplase.

substr ( s , mwen [ , n ] )

Retounen nan pi fò nan n -character substring nan kòmanse nan mwen . Si n se omisyon, se rès la nan itilize.

tolower ( str )

Retounen yon kopi str string, ak tout karaktè anwo ka yo nan str tradwi korespondan korespondan-ka yo. Karaktè ki pa alfabè yo rete san chanje.

toupp ( str )

Retounen yon kopi str string, ak tout karaktè pi ba-ka yo nan str tradwi korespondan anwo-ka tokay yo. Karaktè ki pa alfabè yo rete san chanje.

Fonksyon tan

Depi youn nan itilizasyon prensipal la nan pwogram AWK se dosye log dosye ki gen enfòmasyon koupon pou tan, gawk bay fonksyon sa yo pou jwenn koupon tan ak fòma yo.

mktime ( datpec )

Rurns datpec nan yon koupon pou tan nan fòm nan menm jan yo te retounen pa systime () . Dat la se yon kòd fòm YYYY MM DD HH MM SS [DST] . Sa ki nan fisèl la se sis oswa sèt nimewo ki reprezante respektivman ane a plen ki gen ladan syèk, mwa a soti nan 1 a 12, jou a nan mwa a soti nan 1 a 31, lè a nan jounen an soti nan 0 a 23, minit ki soti nan 0 a 59, ak dezyèm lan soti nan 0 a 60, ak yon siyal obligatwa lajounen drapo. Valè chif sa yo pa bezwen nan chenn yo espesifye; pou egzanp, yon èdtan nan -1 vle di 1 èdtan anvan minwi. Se orijin-zewo kalandriye Gregoryen an sipoze, ak ane 0 ki vin anvan ane 1 ak ane -1 anvan ane a 0. Tan an sipoze yo dwe nan timezone lokal la. Si drapo ekonomize lajounen an pozitif, tan an sipoze tan pou ekonomize tan; si zewo, tan an sipoze yo dwe estanda tan; epi si negatif (default la), mktime () eseye detèmine si tan ekonomize tan an an efè pou tan an espesifye. Si datepec pa gen eleman ase oswa si tan an ki kapab lakòz se soti nan ranje, mktime () retounen -1.

strftime ( [ fòma [ , timestamp ]]

Fòma timestamp selon spesifikasyon la nan fòma. Tanpèt la ta dwe nan fòm la menm jan yo retounen nan systime () . Si timestamp ki manke, yo itilize tan aktyèl la nan jounen an. Si fòma a manke, se yon fòma default ekivalan a pwodiksyon an nan dat (1) yo itilize. Al gade nan spesifikasyon la pou strftime () fonksyon an ANSI C pou fòma konvèsyon yo ki garanti yo dwe disponib. Yon vèsyon piblik-domèn nan strftime (3) ak yon paj moun pou li vini ak gawk ; si yo te vèsyon sa a itilize yo bati gawk , Lè sa a, tout konvèsyon ki dekri nan paj sa a nonm ki disponib nan gawk.

systèm ()

Retounen tan aktyèl la nan jou kòm kantite segonn depi epòk la (1970-01-01 00:00:00 UTC sou sistèm POSIX).

Fonksyon Manipilasyon Bit

Kòmanse ak vèsyon 3.1 nan gawk , fonksyon sa yo manipilasyon ti jan yo disponib. Yo travay pa konvèti doub-presizyon valè k ap flote pwen yo antye nonm antye long , fè operasyon an, ak Lè sa a, konvèti rezilta a tounen nan pwen k ap flote. Fonksyon yo se:

ak ( v1 , v2 )

Retounen bitisite a ak valè yo bay v1 ak v2 .

konpliman ( val )

Retounen konpleman an bitu nan val .

lshift ( val , konte )

Retounen valè Val , deplase gòch pa Bits konte .

oswa ( v1 , v2 )

Retounen bitu OSW a nan valè v1 ak v2 .

rshift ( val , konte )

Retounen valè Val , deplase dwat pa Bits konte .

xor ( v1 , v2 )

Retounen xOR a bitu nan valè yo bay nan v1 ak v2 .

Fonksyon Entènasyonalizasyon

Kòmanse ak vèsyon 3.1 nan gawk , fonksyon sa yo ka itilize nan pwogram AWK ou a pou tradui strings nan kouri tan. Pou detay konplè, gade GAWK: Pwogram efikas AWK .

bindtextdomain ( anyè [ , domèn ] )

Espesifye anyè a kote gawk sanble pou dosye yo .mo , nan ka yo pa pral oswa yo pa kapab mete yo nan pozisyon yo "estanda" (egzanp, pandan tès). Li retounen anyè a kote domèn se "mare".

Domèn nan default se valè a nan TEXTDOMAIN . Si anyè a se fisèl la nil ( "" ), Lè sa a, bindtextdomain () retounen obligatwa aktyèl la pou domèn yo bay yo .

dcgettext ( kòd [ , domèn [ , kategori ]] )

Retounen tradiksyon an nan fisèl nan domèn domèn tèks pou kategori kategori lokal yo. Valè a default pou domèn se valè aktyèl la nan TEXTDOMAIN . Valè defo pou kategori a se "LC_MESSAGES" .

Si ou bay yon valè pou kategori , li dwe yon fisèl egal a youn nan kategori lokal yo li te ye ki dekri nan GAWK: Efektif AWK Programming . Ou dwe bay yon tèks tou. Sèvi ak TEXTDOMAIN si ou vle sèvi ak domèn aktyèl la.

dcngettext ( string1 , string2 , nimewo [ , domèn [ , kategori ]] )

Retounen fòm nan pliryèl yo itilize pou kantite tradiksyon nan string1 ak string2 nan domèn domèn tèks pou kategori kategori lokal yo. Valè a default pou domèn se valè aktyèl la nan TEXTDOMAIN . Valè defo pou kategori a se "LC_MESSAGES" .

Si ou bay yon valè pou kategori , li dwe yon fisèl egal a youn nan kategori lokal yo li te ye ki dekri nan GAWK: Efektif AWK Programming . Ou dwe bay yon tèks tou. Sèvi ak TEXTDOMAIN si ou vle sèvi ak domèn aktyèl la.

Fonksyon USER-DEFINI

Fonksyon nan AWK yo defini jan sa a:

Non Fonksyon ( lis paramèt ) { deklarasyon }

Fonksyon yo egzekite lè yo rele soti nan ekspresyon nan modèl oswa aksyon. Paramèt aktyèl apwovizyone nan apèl fonksyon yo itilize pou enstane paramèt fòmèl yo te deklare nan fonksyon an. Dosye yo pase pa referans, lòt varyab yo pase pa valè.

Depi fonksyon yo pa te orijinèlman yon pati nan lang AWK la, dispozisyon pou varyab lokal se olye maladwa: Yo deklare kòm paramèt siplemantè nan lis la paramèt. Konvansyon an se separe varyab lokal soti nan paramèt reyèl pa espas siplemantè nan lis la paramèt. Pa egzanp:

fonksyon f (p, q, a, b) # a ak b lokal yo {...} / abc / {...; f (1, 2); ...}

Parantèz ki rete a nan yon apèl fonksyon oblije imedyatman swiv non an fonksyon, san yo pa nenpòt ki entèveni espas blan. Sa a se pou fè pou evite yon anbigwitid sentetik ak operatè an konekte. Restriksyon sa a pa aplike nan fonksyon bati-an ki endike anwo a.

Fonksyon yo ka rele youn ak lòt epi yo kapab repetitif. Fonksyon fonksyon yo itilize kòm varyab lokal yo inisyalize fisèl null la ak nimewo a zewo sou fonksyon invokasyon.

Itilize retou ekspr pou retounen yon valè de yon fonksyon. Valè a retounen se endefini si pa gen okenn valè bay, oswa si fonksyon an retounen pa "tonbe sou '' nan fen an.

Si --lint te bay, gawk avèti sou apèl nan fonksyon endepandan nan parse tan, olye pou yo nan tan kouri. Rele yon fonksyon endefini nan tan kouri se yon erè fatal.

Fonksyon mo a ka itilize nan plas fonksyon .

DYNAMIK LOJMAN FONKSYON NOUVO

Kòmanse ak vèsyon 3.1 nan gawk , ou ka dynamique ajoute nouvo fonksyon bati-an gawk entèprèt la kouri. Detay konplè yo pi lwen pase paj sa a manyèl la; Gade GAWK: Efektif AWK Programming pou detay yo.

ekstansyon ( objè , fonksyon )

Dinamik konekte fichye a objè pataje yo rele nan objè , ak envoke fonksyon nan objè sa a, fè inisyalizasyon. Sa yo ta dwe tou de ap bay kòm strings. Retounen valè a retounen nan fonksyon .

Fonksyon sa a bay ak dokimante nan GAWK: Efektif AWK Programming , men tout bagay sou karakteristik sa a gen chans rive nan chanje nan lage nan pwochen an. Nou trè rekòmande ke ou pa itilize karakteristik sa a pou anyen ke ou pa vle refè.

SIYAL

pgawk aksepte de siyal. SIGUSR1 lakòz li nan pil fatra yon pwofil ak fonksyon rele nan dosye a pwofil, ki se swa awkprof.out , oswa kèlkeswa sa dosye te rele ak opsyon nan - pwofil . Li Lè sa a, kontinye ap kouri. SIGHUP lakòz li nan pil fatra pwofil la ak fonksyon rele ak Lè sa a, sòti.

EGZANP

Ekri an lèt detache epi sòt non an login tout itilizatè yo: BEGIN {FS = ":"} {enprime $ 1 | "sòt"} Konte liy nan yon dosye: {nlines ++} END {enprime nlines} Prepare chak liy pa nimewo li nan dosye a: {enprime FNR, $ 0} Konekte ak nimewo liy (yon varyasyon sou yon tèm): {enprime NR, $ 0}

Entènèt

Konstan fisèl yo se sekans nan karaktè ki fèmen nan quotes doub. Nan anviwònman ki pa pale anglè, li posib pou make strings nan pwogram AWK kòm mande pou tradiksyon nan lang natifnatal natirèl la. Strings sa yo make nan pwogram AWK avèk yon dirijan souliye (`` _ ''). Pa egzanp,

gawk 'BEGIN {ekri an lèt detache "hello, world"}'

toujou prints hello, mond lan . Men,

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

ta ka enprime bonjour, monde an Frans.

Gen plizyè etap ki enplike nan pwodwi ak kouri yon pwogram AWK lokalize.

1.

Ajoute yon aksyon BEGIN bay yon valè nan varyab la TEXTDOMAIN yo mete domèn tèks la nan yon non ki asosye ak pwogram ou an.


KÒMANSE {TEXTDOMAIN = "myprog"}

Sa a pèmèt gawk jwenn dosye a .mo ki asosye ak pwogram ou an. San yo pa etap sa a, gawk itilize domèn tèks mesaj , ki gen anpil chans pa gen tradiksyon pou pwogram ou an.

2.

Make tout strings ki ta dwe tradui ak dirèk enkyetid.

3.

Si sa nesesè, sèvi ak fonksyon yo dcgettext () ak / oswa bindtextdomain () nan pwogram ou a, jan sa apwopriye.

4.

Kouri gawk --gen-po -f myprog.awk> myprog.po jenere yon dosye .po pou pwogram ou an.

5.

Bay tradiksyon ki apwopriye, ak bati ak enstale yon korespondan.

Karakteristik yo entènasyonalizasyon yo dekri nan detay konplè nan GAWK: Efektif AWK Programming .

Posix Konpatibilite

Yon objektif prensipal pou gawk se konpatibilite ak estanda a POSIX, menm jan tou ak vèsyon an dènye nan UNIX awk . Pou sa sa, gawk enkòpore itilizatè sa a vizib karakteristik vizib ki pa yo dekri nan liv la AWK, men yo se yon pati nan vèsyon an Laboratwa Bell nan awk , epi yo nan estanda a POSIX.

Liv la endike ke plasman liy varyab varyab k ap pase lè awk ta otreman louvri agiman an kòm yon dosye, ki se apre blòk la BEGIN se egzekite. Sepandan, nan enprimant pi bonè, lè sa yo yon plasman parèt devan nenpòt non dosye, plasman an ta rive anvan blòk la BEGIN te kouri. Aplikasyon yo te vin depann sou karakteristik sa a. '' Lè awk te chanje pou matche ak dokiman li yo, yo te opsyon -v pou plase varyab anvan ekzekisyon pwogram te ajoute pou akomode aplikasyon ki depann sou konpòtman la fin vye granmoun. (Te karakteristik sa a te dakò sou pa tou de Laboratwa yo Bell ak devlopè yo GNU.)

Opsyon -W pou aplikasyon karakteristik espesifik se nan estanda POSIX la.

Lè agiman pwosesis, gawk itilize opsyon espesyal `` - '' pou siyal nan fen agiman. Nan mòd konpatibilite, li avèti sou men otreman inyore opsyon san limit. Nan operasyon nòmal, agiman sa yo yo pase sou pwogram AWK pou li travay.

Liv AWK a pa defini valè retounen nan srand () . POSIX estanda a gen li retounen pitit pitit li te itilize a, pou pèmèt kenbe tras nan sekans nimewo o aza. Se poutèt sa, srand () nan gawk tou retounen pitit pitit li ye kounye a.

Lòt karakteristik nouvo yo se: itilize nan opsyon miltip -f (soti nan MKS awk ); etalaj ENVIRON ; sekans \\ a , ak v \ v (fè orijinal nan gawk ak manje tounen nan vèsyon an Laboratwa Bell); tolower () ak toupper () fonksyon bati-an (ki soti nan vèsyon vèsyon Bell); ak espesifikasyon konvèsyon ANSI C yo nan printf (fè premye nan vèsyon an Laboratwa Bell).

Istorik Features

Gen de karakteristik nan istorik AWK enpak ki gawk sipòte. Premyèman, li posib yo rele longè a () bati-an fonksyon pa sèlman ki pa gen okenn agiman, men menm san parantèz! Se konsa,

yon = longè # Sentespri Algol 60, Batman!

se menm bagay la kòm swa nan

yon = longè ()
yon = longè ($ 0)

Karakteristik sa a make kòm "deprecated" nan estanda POSIX la, ak gawk pwoblèm yon avètisman sou itilize li si --lint se espesifye sou liy lan lòd.

Karakteristik nan lòt se itilize nan swa kontinye nan oswa deklarasyon sa yo kase deyò kò a nan yon ti tan , pou , oswa bouk. Tradisyonèl AWK tradisyonèl yo te trete l 'tankou ekivalan a pwochen deklarasyon an. Gawk sipòte l 'sa a si - tradisyonèl ki te espesifye.

GNU ekstansyon

Gawk gen yon kantite ekstansyon pou POSIX awk . Yo dekri nan seksyon sa a. Tout ekstansyon ki dekri isit la ka enfim pa envoke gawk ak opsyon nan - tradisyonèl .

Karakteristik sa yo nan gawk yo pa disponib nan POSIX awk .

*

Pa gen okenn rechèch chemen ki fèt pou dosye yo te rele via -f opsyon an. Se poutèt sa, varyab anviwònman AWKPATH la pa espesyal.

*

\ X sekans chape a. (Enfim ak - pozisyon .)

*

Fflush () fonksyon an. (Enfim ak - pozisyon .)

*

Kapasite a kontinye liy apre ? ak : . (Enfim ak - pozisyon .)

*

Konstan oktal ak ekzadesimal nan pwogram AWK yo.

*

ARGIND , BINMODE , ERRNO , LINT , RT ak TEXTDOMAIN varyab yo pa espesyal.

*

IGNORECASE varyab ak efè segondè-li yo pa disponib.

*

FIELDWIDTHS varyab la ak fiks-lajè divize jaden.

*

Etalaj PROCINFO a pa disponib.

*

Itilize RS kòm yon ekspresyon regilye.

*

Non yo dosye espesyal ki disponib pou I / O redireksyon yo pa rekonèt.

*

A | & operatè pou kreye ko-pwosesis.

*

Kapasite nan fann soti karaktè endividyèl lè l sèvi avèk fisèl la nil kòm valè a nan FS , ak kòm agiman an twazyèm fann () .

*

Agiman opsyonèl dezyèm lan nan fonksyon an fèmen () .

*

Aksyon nan opsyonèl twazyèm nan matche ak () fonksyon an.

*

Kapasite a yo sèvi ak espesifik positional ak printf ak sprintf () .

*

Itilize nan efase etalaj efase tout sa ki nan yon etalaj.

*

Itilize nan nextfile pou abandone pwosesis nan dosye opinyon aktyèl la.

*

Asosye () , bindtextdomain () , compl () , dcgettext () , gensub () , lshift () , mktime () , oswa () , rshift () , strftime () , strtonum () , systime () ak xor () fonksyon.

*

Strings lokalize.

*

Ajoute nouvo fonksyon bati-an dynamique ak ekstansyon () fonksyon an.

Liv AWK la pa defini valè retounen nan fonksyon an fèmen () . Gawk a fèmen () retounen valè a nan fclose (3), oswa mete (3), lè yo fèmen yon dosye pwodiksyon oswa tiyo, respektivman. Li retounen estati sòti pwosesis la lè li fèmen yon tiyo opinyon. Valè a retounen se -1 si dosye a te rele, tiyo oswa ko-pwosesis pa te louvri ak yon redireksyon.

gawk ap envoke ak opsyon nan - tradisyonèl , si agiman an fs opsyon an -F se `` t '', Lè sa a, FS se mete nan karaktè nan tab. Remake byen ke tape gawk -F \ t ... tou senpleman lakòz koki a site "t la", epi yo pa pase `` \ 'nan opsyon an -F . Depi sa a se yon ka olye lèd espesyal, li se pa konpòtman an default. Konpòtman sa a tou pa rive si --posix te espesifye. Vrèman jwenn yon karaktè tab kòm séparation jaden an, li pi bon yo itilize quotes sèl: gawk -F '\ t' ....

Gade lòt kòmandman : tann , lp , ranpli , execv , getfacl , ioctl , uniq , rmmod , pvcreate , rsh , unix2dos , cal , fs , cd , iwpriv , swapon , autofs , pale , motd , gratis , lpr , execl , fdisk , nan , ki moun ki , iwconfig , ifconfig , vgdisplay , louvri , lsmod , ntohs , mailq , touye , wtmp