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:
- Ang una nga field nga mao ang \TecMint.com” gi-access gamit ang
$1
. - Ang ikaduhang field nga mao ang \is gi-access gamit ang
$2
. - 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.