Indlela Yokubhala Imiyalo Ye-AWK ne-Scripts

Imiyalo, i-syntax, nezibonelo

Umyalo we-awk kuyindlela enamandla yokucubungula noma ukuhlaziya amafayela wombhalo-ikakhulukazi, amafayela wedatha ahlelwe imigqa (imigqa) namakholomu.

Imiyalo ye- awk elula ingasebenza kusukela kumlayini wokulayela . Imisebenzi eyinkimbinkimbi kufanele ibhalwe njengamahlelo awk (okuthiwa ama-awk scripts) kufayili.

Ifomethi eyisisekelo yomyalo we-awk ibonakala kanje:

I-awk 'pattern {action}' yokufaka-ifayela> okuphumayo-ifayela

Lokhu kusho ukuthi: thatha umugqa ngamunye wefayela lokufaka; uma umugqa uqukethe iphethini sebenzisa isenzo emgqeni bese ubhala umphumela ophumela ekuphumeni-ifayela. Uma iphethini ishiywe, isenzo sisebenza kuwo wonke umugqa. Ngokwesibonelo:

Awk '{phrinta $ 5}' table1.txt> output1.txt

Lesi sitatimende sithatha isici sekholomu yesihlanu emgqeni ngamunye bese sibhala njengomugqa efayeleni yokukhipha "output.txt". Ukuguquguquka '$ 4' kubhekisela kukholomu yesibili. Ngokufanayo ungakwazi ukufinyelela ikholomu yokuqala, yesibili, neyesithathu, nge $ 1, $ 2, $ 3, njll. Amakholomu okuzenzakalelayo acatshangwa ukuba ahlukaniswe izikhala noma amathebhu (okuthiwa isikhala esimhlophe). Ngakho, uma ifayela lokufaka "i-table1.txt" liqukethe la migqa:

1, Justin Timberlake, Title 545, Price $ 7.30 2, Taylor Swift, Isihloko 723, Intengo $ 7.90 3, uMick Jagger, Isihloko 610, Intengo $ 7.90 4, Lady Gaga, Isihloko 118, Intengo $ 7.30 5, Johnny Cash, Isihloko 482, Intengo $ 6.50 6, u-Elvis Presley, Isihloko 335, Intengo ka $ 7.30 7, uJohn Lennon, Isihloko 271, Intengo $ 7.90 8, uMichael Jackson, Isihloko 373, Intengo $ 5.50

Khona-ke umyalo ubungabhala imigqa elandelayo efayeleni yokukhipha "output1.txt":

545, 723, 610, 118, 482, 335, 271, 373,

Uma i-separator yekholomu yinto enye ngaphandle kwezikhala noma amathebhu, njenge-comma, ungacacisa ukuthi esitatimendeni sama-awk kanje:

awk -F, '{phrinta $ 3}' table1.txt> output1.txt

Lokhu kuzokhetha isici kusuka kukholomu 3 komugqa ngamunye uma amakholomu acatshangwa ukuthi ahlukaniswe umbala. Ngakho-ke okukhiphayo, kulokhu, kuzoba:

Isihloko 545 Isihloko 723 Isihloko 610 Isihloko 118 Isihloko 482 Isihloko 335 Isihloko 271 Isihloko 373

Uhlu lwezitatimende ngaphakathi kubakaki abalungile ('{', '}' kuthiwa yi-block. Uma ufaka imibono enemibandela phambi kwebhokisi, isitatimende ngaphakathi kwebhulogi sizokwenziwa kuphela uma isimo siyiqiniso.

awk '$ 7 == "\ $ 7.30" {phrinta $ 3}' table1.txt

Kulesi simo, isimo siyi $ 7 == "\ $ 7.30", okusho ukuthi isici kukholomu 7 silingana no-$ 7.30. Ukubuyela emuva phambi kwesibonakaliso se-dollar kusetshenziselwa ukuvimbela isistimu ekuhumusha i-$ 7 njengendlela eguquguqukayo futhi esikhundleni salokho, thatha isibonakaliso se-dollar ngokoqobo.

Ngakho-ke isitatimende se-awk sigcizelela isici kukholomu yesithathu komugqa ngamunye onayo "$ 7.30" kukholomu 7.

Ungasebenzisa futhi izinkulumo ezivamile njengesimo. Ngokwesibonelo:

awk '/ 30 / {phrinta $ 3}' table1.txt

Intambo ephakathi kwezinkomba zombili ('/') iyinkulumo ejwayelekile. Kulesi simo, kuyisicingo nje "30." Lokhu kusho ukuthi uma umugqa uqukethe izintambo "30", isistimu idlulisa isici ku-ikholomu yesithathu yalowo mgca. Okukhiphayo kusibonelo esingenhla kungaba:

I-Timberlake, i-Gaga, i-Presley, i-

Uma izakhi zetafula zizinombolo awk zingasebenzisa izibalo kuzo njengalesi sibonelo:

awk '{ukuphrinta ($ 2 * $ 3) + $ 7}'

Ngaphandle kwezinguquko ezitholakalayo ezingeni lomugqa wamanje ($ 1, $ 2, njll) kukhona ukuguquguquka kwe $ 0 okubhekisela kumugqa ophelele (umugqa), kanye ne-NF eguquguqukayo ephethe inani lezinsimu.

Ungakwazi futhi ukuchaza iziguquguquko ezintsha njengalesi sibonelo:

Awk '{sum = 0; ngoba (ikholomu = 1; ikholomu <= NF; ikholomu +) isamba + = $ col; ukuphrinta isamba; } '

Lokhu kuqhathanisa futhi kuguqula inani lazo zonke izakhi zomugqa ngamunye.

Izitatimende ze-Awk zivame ukuhlanganiswa nemilayezo yangempela .