Mmene Mungalembe Malemba AWK ndi Malemba

Malamulo, syntax, ndi zitsanzo

Lamulo la awk ndi njira yothandiza yogwiritsira ntchito kapena kusanthula mafayilo olemba-makamaka, mafayilo a deta omwe amasankhidwa ndi mizere (mizera) ndi mizati.

Malamulo ophweka ovuta akhoza kuthamanga kuchokera ku mzere wa lamulo . Ntchito zovuta kwambiri ziyenera kulembedwa monga mapulogalamu ovuta (omwe amatchedwa awk scripts) ku fayilo.

Maonekedwe oyambirira a lamulo la awk amawoneka ngati awa:

chotsatira cha 'awatch' {action} 'cholowera-fayilo> chotsitsa-file

Izi zikutanthauza: kutenga mzere uliwonse wa fayilo yolowera; ngati mzerewu uli ndi ndondomekoyi ikugwiritsanso ntchito ndondomekoyi ndikulemba mzerewu chifukwa cha fayilo. Ngati ndondomekoyi yasiya, ntchitoyi ikugwiritsidwa ntchito ku mzere wonse. Mwachitsanzo:

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

Mawu awa amatenga gawo la gawo lachisanu la mzere uliwonse ndikulilemba ngati mzere mu fayilo yotulutsa "output.txt". Zosintha '$ 4' zikutanthauza ndime yachiwiri. Mofananamo mungathe kulumikiza gawo loyamba, lachiwiri, ndi lachitatu, ndi $ 1, $ 2, $ 3, ndi zina zotero. Mipangidwe yosasintha imalingaliridwa kuti ikhale yosiyana ndi malo kapena tabu (lotchedwa white space). Kotero, ngati fayilo yowonjezera "table1.txt" ili ndi mizere iyi:

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

Ndiye lamulo likanakhoza kulemba mizere yotsatira ku fayilo yotulutsa "output1.txt":

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

Ngati gawo lolekanitsa liri chinachake kupatula malo kapena ma tabo, monga comma, mungathe kufotokozera kuti mawu awa ndi awa:

zovuta -F, '{kusindikiza $ 3}' table1.txt> output1.txt

Izi zidzasankha zinthu zomwe zili m'mbali ya 3 ya mzere uliwonse ngati zikhomo zikuwonedwa kuti zimasiyanitsidwa ndi comma. Choncho, zotsatirazi, mu nkhaniyi, zidzakhala:

Mutu 545 Mutu 118 Mutu 373 Mutu 373

Mndandanda wa mafotokozedwe mkati mwa mabwalo okongoletsa ('{', '}') amatchedwa block. Ngati mwaika ndondomeko yovomerezeka kutsogolo kwa chipika, mawu mkati mwa chipikacho adzachitidwa kokha ngati chikhalidwe chiri chowonadi.

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

Pachifukwa ichi, chikhalidwe ndi $ 7 == "\ $ 7.30", kutanthauza kuti chinthu chomwe chili pa chigawo 7 chikufanana ndi $ 7.30. Kubwerera mmbuyo kutsogolo kwa chizindikiro cha dola kumagwiritsidwa ntchito kuteteza dongosolo kutanthauzira $ 7 ngati chosinthika ndipo mmalo mwake kutenga chizindikiro cha dola kwenikweni.

Kotero mawu awa awk amachokera ku gawo lachitatu la mzere uliwonse umene uli ndi "$ 7.30" pa ndime 7.

Mungagwiritsenso ntchito mawu omwe mumakhala nawo nthawi zonse . Mwachitsanzo:

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

Chingwe pakati pa awiriwo chimatuluka ('/') ndizowonetsera nthawi zonse. Pankhaniyi, ndi chingwe "30." Izi zikutanthauza ngati mzere uli ndi chingwe "30", ndondomekoyi imasintha zomwe zimakhala pa gawo lachitatu la mzerewu. Zotsatira zomwe zili pamwambazi zingakhale:

Timberlake, Gaga, Presley,

Ngati zigawo za tebulo ndi manambala awk akhoza kuthamanga mawerengedwe pa iwo monga mwachitsanzo ichi:

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

Kuphatikiza pa zosiyana zomwe zilipo mndandanda wamakono ($ 1, $ 2, ndi zina) pali variable $ 0 yomwe imatanthawuza mzere wathunthu (mzera), ndi NF yosasinthika yomwe imagwira chiwerengero cha minda.

Mungathenso kutanthauzira zosiyana zatsopano monga mwachitsanzo ichi:

awk '{sum = 0; kwa (col = 1; col <= NF; col ++) ndalama = = $ col; kusindikiza ndalama; } '

Izi zimaphatikiza ndi kusindikiza chiwerengero cha zinthu zonse mumzere uliwonse.

Zolemba zazinthu zambiri zimakhala pamodzi ndi malamulo osakhala .