Linux-da Awk bilen deňeşdirme operatorlaryny nädip ulanmaly - 4-nji bölüm


Tekstiň hataryndaky san ýa-da setir bahalary bilen iş salyşanyňyzda, deňeşdirme operatorlaryny ulanyp tekst ýa-da setirleri süzmek Awk buýruk ulanyjylary üçin amatly bolýar.

“Awk” seriýasynyň bu bölüminde deňeşdirme operatorlaryny ulanyp teksti ýa-da setirleri nädip süzüp biljekdigiňize göz aýlarys. Eger programmist bolsaňyz, deňeşdirme operatorlary bilen eýýäm tanyş bolmaly, ýöne ýoklar, aşakdaky bölümde düşündiriň.

Awkdaky deňeşdirme operatorlary sanlaryň ýa-da setirleriň bahasyny deňeşdirmek üçin ulanylýar we olar aşakdakylary öz içine alýar:

  1. > -
  2. -den uly
  3. < -
  4. -den az
  5. >= - ondan uly ýa-da deňdir
  6. <= -
  7. -den az ýa-da deňdir
  8. == -
  9. deňdir
  10. != -
  11. bilen deň däl
  12. some_value ~/pattern/ - käbir_value nagyş bilen gabat gelýän bolsa dogry
  13. some_value! ~/pattern/ - käbir_ baha nagyş bilen gabat gelmese dogry

Awkdaky dürli deňeşdirme operatorlaryna seredenimizden soň, olara mysal ulanyp has gowy düşüneliň.

Bu mysalda, dürli iýmit önümleriniň söwda sanawy bolan food_list.txt atly bir faýlymyz bar we (**) goşmak bilen mukdary 20-den az ýa-da deň bolan iýmit önümlerini bellemek isleýärin. her setiriň soňunda.

No      Item_Name               Quantity        Price
1       Mangoes                    45           $3.45
2       Apples                     25           $2.45
3       Pineapples                 5            $4.45
4       Tomatoes                   25           $3.45
5       Onions                     15           $1.45
6       Bananas                    30           $3.45

Awk-da deňeşdirme operatorlaryny ulanmak üçin umumy sintaksis:

# expression { actions; }

Aboveokardaky maksada ýetmek üçin aşakdaky buýrugy ýerine ýetirmeli bolaryn:

# awk '$3 <= 30 { printf "%s\t%s\n", $0,"**" ; } $3 > 30 { print $0 ;}' food_list.txt

No	Item_Name`		Quantity	Price
1	Mangoes	      		   45		$3.45
2	Apples			   25		$2.45	**
3	Pineapples		   5		$4.45	**
4	Tomatoes		   25		$3.45	**
5	Onions			   15           $1.45	**
6	Bananas			   30           $3.45	**

Aboveokardaky mysalda bolup geçýän iki möhüm zat bar:

  1. Birinji aňlatma {hereket; } kombinasiýa, $3 <= 30 {printf “% s\t% s\n”, $0, ”**”; 30 30-dan az ýa-da deň mukdarda setirleri çap edýär we her setiriň soňuna (**) goşýar. Mukdar bahasyna $3 meýdan üýtgeýjisini ulanyp bolýar.
  2. Ikinji aňlatma {hereket; } kombinasiýa, $3> 30 {çap 0 $;} setirleri üýtgemeýär, sebäbi mukdary 30-dan köp.

Moreene bir mysal:

# awk '$3 <= 20 { printf "%s\t%s\n", $0,"TRUE" ; } $3 > 20  { print $0 ;} ' food_list.txt 

No	Item_Name		Quantity	Price
1	Mangoes			   45		$3.45
2	Apples			   25		$2.45
3	Pineapples		   5		$4.45	TRUE
4	Tomatoes		   25		$3.45
5	Onions			   15           $1.45	TRUE
6       Bananas	                   30           $3.45

Bu mysalda, ahyrynda (TRUE) sözi bilen az mukdarda ýa-da 20-e deň bolan setirleri görkezmek isleýäris.

Gysgaça mazmun

Bu Awkdaky operatorlary deňeşdirmek üçin giriş sapagy, şonuň üçin başga-da köp warianty synap görmeli we has köp zady açmaly.

Islän kynçylyklaryňyz ýa-da ýadyňyzda bolsa goşmaçalar bar bolsa, aşakdaky teswir bölüminde teswir ýazyň. Awk seriýasynyň indiki bölümini okamagy ýatdan çykarmaň, bu ýerde sizi goşma sözler bilen alyp bararyn.