Faýlda meýdanlary we sütünleri çap etmek üçin Awk-ny nädip ulanmaly
Linux Awk buýruk seriýamyzyň bu böleginde, meýdan redaktirlemesi bolan Awk-iň iň möhüm aýratynlyklaryndan birine göz aýlarys.
Awk özüne berlen giriş setirlerini awtomatiki usulda meýdanlara bölýär we bir meýdan içerki meýdan bölüji tarapyndan beýleki meýdanlardan bölünen nyşanlaryň toplumy hökmünde kesgitlenip bilner.
Unix/Linux bilen tanyş bolsaňyz ýa-da bash shell programmirleme bilen meşgullanýan bolsaňyz, içerki meýdan bölüji (IFS) üýtgeýjiniň nämedigini bilmelisiňiz. Awk-daky deslapky IFS goýma we giňişlikdir.
Meýdany bölmek ideýasynyň Awk-da şeýle işlemegi: giriş setirine gabat gelende, kesgitlenen IFS-e görä, nyşanlaryň birinji toplumy $1 ulanyp bolýan birinji meýdan, ikinji nyşan toplumy iki meýdan. $2 ulanyp, nyşanlaryň üçünji toplumy, 3-nji meýdan bolup, iň soňky nyşan (lar) -a çenli $3 we ş.m. ulanylýar.
Bu Awk meýdançasynyň redaktirlemegine has gowy düşünmek üçin aşakdaky mysallara göz aýlalyň:
Mysal 1: tecmintinfo.txt atly tekst faýly döretdim.
# vi tecmintinfo.txt # cat tecmintinfo.txt
Soňra buýruk setirinden aşakdaky buýrugy ulanyp, tecmintinfo.txt faýlyndan birinji, ikinji we üçünji meýdanlary çap etmäge synanyşýaryn:
$ awk '//{print $1 $2 $3 }' tecmintinfo.txt TecMint.comisthe
Aboveokardaky çykyşdan, ilkinji üç meýdançadaky nyşanlaryň giňişlik kesgitlenen IFS esasynda çap edilendigini görüp bilersiňiz:
- \TecMint.com meýdançasyna
$1
ulanylýar. - bolan iki meýdan
$2
ulanylýar. - Üçünji meýdan
$3
ulanylýar.
Çap edilen çykyşda üns beren bolsaňyz, meýdan bahalary bölünmeýär we çap edilişiň tertibi boýunça şeýle bolýar.
Çykyşy meýdan bahalarynyň arasyndaky boşluk bilen anyk görmek üçin (,)
operatory aşakdaky ýaly goşmaly:
$ awk '//{print $1, $2, $3; }' tecmintinfo.txt TecMint.com is the
Üns bermeli we hemişe ýatda saklamaly möhüm bir zat, Awkda ($)
ulanylyşynyň gabyk skriptindäki ulanylyşyndan tapawutlylygydyr.
Gabyk skriptiniň aşagynda ($)
üýtgeýänleriň bahasyna girmek üçin Awk ($)
ulanylýar, diňe meýdanyň mazmunyna gireninde ulanylýar, ýöne girmek üçin däl üýtgeýänleriň bahasy.
Mysal 2: Geliň, my_shoping.list atly birnäçe setiri öz içine alýan faýly ulanyp, başga bir meselä göz aýlalyň.
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
Söwda sanawynda her elementiň diňe Unit_Price
çap etmek isländigiňizi aýdyň, aşakdaky buýrugy ýerine ýetirmeli bolarsyňyz:
$ 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-da çykyşyňyzy formatlamaga kömek edýän printf
buýrugy bar, ýokardaky çykyşyň ýeterlik derejede düşnüksizdigini görüp bilersiňiz.
Item_Name we Unit_Price-iň çykyşyny formatlamak üçin printf
ulanyp:
$ 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
Gysgaça mazmun
Awk-dan tekst ýa-da setirleri süzmek üçin meýdan redaktirlemesi örän möhümdir, sanawdaky sütünlerde aýratyn maglumatlary almaga kömek edýär. Awk-da ($)
operatorynyň ulanylyşynyň gabyk skriptinden tapawutlydygyny hemişe ýadyňyzdan çykarmaň.
Makalanyň size peýdaly bolandygyny we zerur goşmaça maglumatlar ýa-da soraglar üçin teswirler bölüminde teswir ýazyp bilersiňiz diýip umyt edýärin.