Nusganyň aýratyn hereketlerini ulanyp, teksti ýa-da setirleri süzmek üçin Awk-ny nädip ulanmaly


Awk buýruk seriýasynyň üçünji bölüminde, ulanyjynyň kesgitläp biljek aýratyn nagyşlary esasynda süzgüçli tekst ýa-da setirlere göz aýlarys.

Käwagt, tekst süzülende, giriş faýlyndan ýa-da belli bir şerte esaslanan ýa-da gabat gelýän belli bir nagyş ulanyp, belli bir setirleri görkezmek isleýärsiňiz. Awk bilen muny etmek gaty aňsat, size peýdaly boljak Awkyň ajaýyp aýratynlyklaryndan biridir.

Aşakdaky bir meselä göz aýlalyň, iýmit_prices.list diýlip atlandyrylýan iýmit önümleri üçin söwda sanawyňyz bar diýeliň. Iýmit önümleriniň we olaryň bahalarynyň aşakdaky sanawy bar.

$ cat food_prices.list 
No	Item_Name		Quantity	Price
1	Mangoes			   10		$2.45
2	Apples			   20		$1.50
3	Bananas			   5		$0.90
4	Pineapples		   10		$3.46
5	Oranges			   10		$0.78
6	Tomatoes		   5		$0.55
7	Onions			   5            $0.45

Soň bolsa, bahasy $2 -dan ýokary bolan iýmit önümlerinde (*) belgisini görkezmek isleýärsiňiz, bu aşakdaky buýrugy ýerine ýetirip bolýar:

$ awk '/ *$[2-9]\.[0-9][0-9] */ { print $1, $2, $3, $4, "*" ; } / *$[0-1]\.[0-9][0-9] */ { print ; }' food_prices.list

Aboveokardaky çykyşdan, setirleriň ahyrynda iýmit önümleri, mango we ananas bolan (*) belgisiniň bardygyny görüp bilersiňiz. Bahalaryny barlasaňyz, 2 $-dan ýokary.

Bu mysalda iki nagyş ulandyk:

  1. birinji: /*\$[2-9] \. [0-9] [0-9] */ azyk önümleriniň bahasy 2 $-dan ýokary we
  2. ikinjisi: /*\$Fotosurat0-1) >

Bu şeýle bolýar, faýlda dört meýdan bar, haçan-da bir iýmit önüminiň bahasy 2 $-dan ýokary bolan bir çyzyk bilen ýüzbe-ýüz bolanda, dört meýdançanyň hemmesini çap edýär we ahyrynda (*) belgisini çap edýär. baýdak hökmünde çyzyk.

Ikinji nagyş, iýmit_prices.list giriş faýlynda görkezilişi ýaly azyk bahasy 2 $-dan az bolan beýleki setirleri çap edýär.

Şeýlelik bilen, bahasy 2 $-dan ýokary bolan iýmit önümlerini süzmek üçin nagyşly hereketleri ulanyp bilersiňiz, çykyşda näsazlyk bar bolsa, (*) belgisi bolan setirler öňküsi ýaly formatlanmaýar çykyşy ýeterlik derejede düşnüksiz edýän galan setirler.

Şol bir meseläni awk seriýasynyň 2-nji bölüminde gördük, ýöne ony iki ýol bilen çözüp bileris:

1. Aşakdaky buýrugy ulanyp, uzyn we içgysgynç usul bolan printf buýrugyny ulanmak:

$ awk '/ *$[2-9]\.[0-9][0-9] */ { printf "%-10s %-10s %-10s %-10s\n", $1, $2, $3, $4 "*" ; } / *$[0-1]\.[0-9][0-9] */ { printf "%-10s %-10s %-10s %-10s\n", $1, $2, $3, $4; }' food_prices.list 

2. $0 meýdançasyny ulanmak. AWK, giriş setirini saklamak üçin üýtgeýän üýtgeşmäni 0 ulanýar. Bu aboveokardaky meseläni çözmegiň amatly we aşakdakylardan ýönekeý we çalt bolsa, ýönekeý we çaltdyr:

$ awk '/ *$[2-9]\.[0-9][0-9] */ { print $0 "*" ; } / *$[0-1]\.[0-9][0-9] */ { print ; }' food_prices.list 

Netije

Häzirlikçe we bular Awk buýrugyny ulanyp, tekstdäki setirleri ýa-da setirleri bellemäge kömek edip biljek nagyşly hereketleri ulanyp teksti süzmegiň ýönekeý usullary.

Bu makalany peýdaly görersiňiz we awk guralyny ulanyp deňeşdirme operatorlaryny ulanmaga gönükdirilen seriýanyň indiki bölümini okamagy ýatdan çykarmaň diýip umyt edýärin.