Giunsa Paggamit ang Awk sa Pag-imprinta sa mga Natad ug Mga Kolum sa File


Niini nga bahin sa among Linux Awk command series, atong tan-awon ang usa sa pinaka importante nga feature sa Awk, nga mao ang field editing.

Maayo nga mahibal-an nga ang Awk awtomatik nga nagbahin sa mga linya sa input nga gihatag niini ngadto sa mga uma, ug ang usa ka field mahimong ipasabut ingon usa ka hugpong sa mga karakter nga gibulag gikan sa ubang mga natad pinaagi sa usa ka internal nga field separator.

Kung pamilyar ka sa Unix/Linux o nagprograma sa bash shell, kinahanglan nimo mahibal-an kung unsa ang variable sa internal field separator (IFS). Ang default nga IFS sa Awk mao ang tab ug luna.

Ingon niini kung giunsa ang ideya sa pagbulag sa uma nagtrabaho sa Awk: kung makasugat kini usa ka linya sa pag-input, sumala sa gipasabut sa IFS, ang una nga set sa mga karakter mao ang field one, nga gi-access gamit ang $1, ang ikaduha nga set sa mga karakter mao ang field two, nga gi-access gamit ang $2, ang ikatulo nga set sa mga karakter mao ang field three, nga gi-access gamit ang $3 ug uban pa hangtod sa katapusang set sa (mga) karakter.

Aron mas masabtan kining Awk field editing, atong tan-awon ang mga pananglitan sa ubos:

Pananglitan 1: Naghimo ko og text file nga gitawag og tecmintinfo.txt.

# vi tecmintinfo.txt
# cat tecmintinfo.txt

Dayon gikan sa command line, gisulayan nako nga i-print ang una, ikaduha ug ikatulo nga field gikan sa file tecmintinfo.txt gamit ang command sa ubos:

$ awk '//{print $1 $2 $3 }' tecmintinfo.txt

TecMint.comisthe

Gikan sa output sa ibabaw, imong makita nga ang mga karakter gikan sa unang tulo ka mga natad giimprinta base sa IFS nga gihubit nga mao ang luna:

  1. Ang una nga field nga mao ang \TecMint.com” gi-access gamit ang $1.
  2. Ang ikaduhang field nga mao ang \is gi-access gamit ang $2.
  3. Ang ikatulo nga field nga mao ang \the kay gi-access gamit ang $3.

Kung namatikdan nimo sa giimprinta nga output, ang mga kantidad sa uma wala gibulag ug ingon niini ang paggawi sa pag-imprinta pinaagi sa default.

Aron matan-aw ang output nga tin-aw uban ang luna tali sa mga kantidad sa field, kinahanglan nimong idugang ang (,) operator sama sa mosunod:

$ awk '//{print $1, $2, $3; }' tecmintinfo.txt

TecMint.com is the

Usa ka importanteng butang nga hinumdoman ug kanunay nga hinumdoman mao nga ang paggamit sa ($) sa Awk lahi sa paggamit niini sa shell scripting.

Ubos sa shell scripting ($) gigamit sa pag-access sa bili sa mga variable samtang sa Awk ($) gigamit lang kini sa pag-access sa mga sulod sa usa ka field apan dili sa pag-access sa bili sa mga variable.

Pananglitan 2: Atong tan-awon ang usa pa ka pananglitan gamit ang file nga adunay daghang linya nga gitawag 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		

Ingna nga gusto nimo nga i-print lamang ang Unit_Price sa matag butang sa lista sa pagpamalit, kinahanglan nimo nga ipadagan ang mando sa ubos:

$ 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

Ang Awk aduna usab usa ka printf nga sugo nga makatabang kanimo sa pag-format sa imong output kay nindot nga paagi kay makita nimo nga dili klaro ang output sa ibabaw.

Gamit ang printf aron ma-format ang output sa Item_Name ug 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

Summary

Importante kaayo ang pag-edit sa field kung gamiton ang Awk sa pagsala sa teksto o mga string, makatabang kini kanimo nga makakuha og partikular nga datos sa mga column sa usa ka lista. Ug hinumdomi kanunay nga ang paggamit sa ($) operator sa Awk lahi kay sa shell scripting.

Nanghinaut ko nga ang artikulo makatabang kanimo ug alang sa bisan unsang dugang nga impormasyon nga gikinahanglan o mga pangutana, mahimo kang mag-post og komento sa seksyon sa komentaryo.