Jinsi ya Kutumia Awk Kuchapisha Sehemu na Safu kwenye Faili
Katika sehemu hii ya safu yetu ya amri ya Linux Awk, tutaangalia mojawapo ya vipengele muhimu zaidi vya Awk, ambavyo ni uhariri wa uga.
Ni vyema kujua kwamba Awk hugawanya kiotomati mistari ya ingizo iliyotolewa kwake katika sehemu, na sehemu inaweza kufafanuliwa kama seti ya herufi ambazo zimetenganishwa na sehemu zingine na kitenganishi cha sehemu ya ndani.
Ikiwa unajua Unix/Linux au fanya programu ya bash shell, basi unapaswa kujua ni tofauti gani ya ndani ya kitenganishi cha uwanja (IFS). IFS chaguo-msingi katika Awk ni tabo na nafasi.
Hivi ndivyo wazo la mgawanyo wa shamba linavyofanya kazi katika Awk: linapokutana na mstari wa pembejeo, kulingana na IFS inavyofafanuliwa, seti ya kwanza ya wahusika ni sehemu ya kwanza, ambayo hupatikana kwa kutumia $1, seti ya pili ya wahusika ni sehemu ya pili, ambayo. inafikiwa kwa kutumia $2, seti ya tatu ya herufi ni sehemu ya tatu, ambayo inafikiwa kwa kutumia $3 na kadhalika hadi seti ya mwisho ya wahusika.
Ili kuelewa uhariri huu wa uwanja wa Awk vyema, hebu tuangalie mifano hapa chini:
Mfano 1: Nimeunda faili ya maandishi inayoitwa tecmintinfo.txt.
# vi tecmintinfo.txt # cat tecmintinfo.txt
Kisha kutoka kwa safu ya amri, ninajaribu kuchapisha sehemu za kwanza, za pili na za tatu kutoka kwa faili tecmintinfo.txt kwa kutumia amri iliyo hapa chini:
$ awk '//{print $1 $2 $3 }' tecmintinfo.txt TecMint.comisthe
Kutoka kwa matokeo hapo juu, unaweza kuona kuwa herufi kutoka kwa sehemu tatu za kwanza zimechapishwa kulingana na IFS iliyofafanuliwa ambayo ni nafasi:
- Sehemu ya kwanza ambayo ni \TecMint.com inafikiwa kwa kutumia
$1
. - Sehemu ya pili ambayo ni \iko inafikiwa kwa kutumia
$2
. - Sehemu ya tatu ambayo ni \the inafikiwa kwa kutumia
$3
.
Ikiwa umegundua katika matokeo yaliyochapishwa, thamani za sehemu hazijatenganishwa na hivi ndivyo uchapishaji unavyofanya kazi kwa chaguo-msingi.
Ili kuona matokeo kwa uwazi na nafasi kati ya thamani za sehemu, unahitaji kuongeza opereta (,)
kama ifuatavyo:
$ awk '//{print $1, $2, $3; }' tecmintinfo.txt TecMint.com is the
Jambo moja muhimu kukumbuka na kukumbuka kila wakati ni kwamba matumizi ya ($)
katika Awk ni tofauti na matumizi yake katika uandishi wa ganda.
Chini ya uandishi wa ganda ($)
hutumika kufikia thamani ya vigeu ilhali katika Awk ($)
inatumika tu wakati wa kufikia yaliyomo kwenye uwanja lakini sio kupata thamani ya vigezo.
Mfano wa 2: Hebu tuangalie mfano mwingine mmoja kwa kutumia faili iliyo na mistari mingi inayoitwa my_shoping.list.
No Item_Name Unit_Price Quantity Price 1 Mouse #20,000 1 #20,000 2 Monitor #500,000 1 #500,000 3 RAM_Chips #150,000 2 #300,000 4 Ethernet_Cables #30,000 4 #120,000
Sema ulitaka tu kuchapisha Unit_Price
ya kila bidhaa kwenye orodha ya ununuzi, utahitaji kutekeleza amri iliyo hapa chini:
$ awk '//{print $2, $3 }' my_shopping.txt Item_Name Unit_Price Mouse #20,000 Monitor #500,000 RAM_Chips #150,000 Ethernet_Cables #30,000
Awk pia ina printf
amri ambayo hukusaidia kuumbiza towe lako ni njia nzuri kwani unaweza kuona matokeo ya hapo juu hayako wazi vya kutosha.
Kwa kutumia printf
kuumbiza pato la Item_Name na Unit_Price:
$ awk '//{printf "%-10s %s\n",$2, $3 }' my_shopping.txt Item_Name Unit_Price Mouse #20,000 Monitor #500,000 RAM_Chips #150,000 Ethernet_Cables #30,000
Muhtasari
Uhariri wa sehemu ni muhimu sana unapotumia Awk kuchuja maandishi au mifuatano, hukusaidia kupata data mahususi katika safu wima kwenye orodha. Na kila wakati kumbuka kuwa matumizi ya ($)
opereta katika Awk ni tofauti na yale katika uandishi wa ganda.
Natumai nakala hiyo ilikuwa ya msaada kwako na kwa habari yoyote ya ziada inayohitajika au maswali, unaweza kutuma maoni katika sehemu ya maoni.