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:

  1. Sehemu ya kwanza ambayo ni \TecMint.com inafikiwa kwa kutumia $1.
  2. Sehemu ya pili ambayo ni \iko inafikiwa kwa kutumia $2.
  3. 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.