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:

  1. \TecMint.com meýdançasyna $1 ulanylýar.
  2. bolan iki meýdan $2 ulanylýar.
  3. Üçü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.