Nzira Yokunyora Makomiti AWK neMagwaro

Mirairo, syntax, uye mienzaniso

Murairo wechiratidzo ndiyo nzira ine simba yekugadzirisa kana kuongorora mafaira emafaira-kunyanya, mafaira e data akarongwa nemitsara (mitsara) nemakoroni.

Zvinyorwa zvinyorwa zvinyorwa zvinyorwa zvinyorwa zvinogona kunge zvichitanga kubva mumutsetse wemirairo Mamwe mabasa akaoma anofanira kunyorwa se awk mapurogiramu (anonzi awk scripts) kune faira.

Iko maitiro ekutanga emurairo we awk anotarisa seiyi:

awk 'pattern {action}' input-file> output-file

Izvi zvinoreva: tora mutsara wega weiyo mafaira; kana mutsetse une chimiro chacho shandisa chiito kune mutsara uye nyora mutsara unoguma ku-output-file. Kana iyo yakasiyiwa, chiito chacho chinoshandiswa kune mutsara wose. Semuyenzaniso:

awk '{shandura $ 5}' table1.txt> output1.txt

Izvi zvinotora chikamu chekorodhi yechishanu yemuganhu mumwe nomumwe uye inoinyora semutsara mune purogiramu ye "output.txt". The variable '$ 4' inoreva chikamu chechipiri. Saizvozvowo iwe unokwanisa kuwana yekutanga, yechipiri, uye yechitatu korombo, ne $ 1, $ 2, $ 3, nezvimwe. Nezvakaipa zvinyorwa zvinofungidzirwa kuti zviparadzaniswe nezvivako kana tate (zvinonzi white space). Saka, kana fomu yekupinza "table1.txt" ine mitsara iyi:

1, Justin Timberlake, Musoro 545, Mutengo $ 7.30 2, Taylor Swift, Musoro 723, Mutengo $ 7.90 3, Mick Jagger, Mutengo 610, Mutengo $ 7.90 4, Lady Gaga, Mutengo 118, Mutengo $ 7.30 5, Johnny Cash, Musoro 482, Mutengo $ 6.50 6, Elvis Presley, Musoro 335, Mutengo $ 7.30 7, John Lennon, Musoro 271, Mutengo $ 7.90 8, Michael Jackson, Musoro 373, Mutengo $ 5.50

Zvadaro mutemo waizonyora mitsara inotevera kumutambo we "output1.txt":

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

Kana iyo separamende yechinyorwa ichi chimwe chinhu kunze kwezvivako kana tabhi, zvakadai se comma, unogona kutsanangura izvo mumashoko ekukanganiswa sezvinotevera:

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

Izvi zvinosarudza chinhu kubva munharaunda 3 yemumwe mutsetse kana mapuranga achionekwa seakaparadzaniswa nekomma. Saka izvo zvabuda, munyaya iyi, zvinogona kuva:

Chinyorwa 545 Chinyorwa 723 Chinyorwa 610 Chinyorwa 118 Chinyorwa 282 Chinyorwa 335 Chinyorwa 271 Chidzidzo 373

Izvo zvinyorwa zvekutaura mukati mezvikwereti zvakanyanyisa ('{', '}') inonzi bloc. Kana iwe ukaisa mvumo yemagariro pamberi pebhenekeri, chirevo mukati memudziro chichaitwa chete kana chiitiko chiri chechokwadi.

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

Muchiitiko ichi, mamiriro acho ndiwo $ 7 == "\ $ 7.30", izvo zvinoreva kuti chinhu chiripo chinyorwa 7 chakaenzana ne $ 7.30. Kudzokera shure pamberi pechiratidzo chemadhora kunoshandiswa kudzivirira urongwa kubva mukududzira $ 7 sechinhu chinoshandiswa uye pane kutora chikwangwani chemadhora chaiwo.

Saka nhaurwa iyi yechiratidzo inogadzirisa chikamu pa 3rd column yega rimwe nerimwe rine "$ 7.30" pane chinyorwa 7.

Iwe unogonawo kushandisa mazwi anogara achiita semamiriro ezvinhu. Semuyenzaniso:

awk '/ 30 / {print $ 3}' tafura1.txt

Rwonzi pakati pemakumbo maviri ('/') inowanzotaurwa. Munyaya iyi, inongova tambo "30." Izvi zvinoreva kana mutsetse une chine "30", iyo inogadziridza chinhu ichocho mukorori yechitatu yemutsara iwoyo. Izvo zvabuda mumuenzaniso wepamusoro zvingave:

Timberlake, Gaga, Presley,

Kana iyo tafura yezvinyorwa inhamba nhamba awk inogona kutarisa kuverenga pavari sezvinotevera mumuenzaniso uyu:

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

Kunze kwezvimwe zvinoshandiswa pakuwana zvinhu zvemutsara wemazuva ano ($ 1, $ 2, etc.) pane inoshandiswa $ 0 iyo inoreva mutsara wakakwana (mutsara), uye iyo NF inoshandiswa inobata nhamba yeminda.

Iwe unogonawo kutsanangura zvinoshandiswa zvitsva semuenzaniso uyu:

awk '{sum = 0; nokuti (col = 1; col <= NF; koro + +) sum + = $ col; print sum; } '

Izvi zvinokonzera uye zvinonyora kukosha kwezvinhu zvose zvemutsara mumwe nomumwe.

Zvinyorwa zvinyorwa zvinowanzobatanidzwa nemirairo .