Hvernig á að nota samanburðarstjóra með Awk í Linux - Part 4


Þegar fjallað er um töluleg gildi eða strengjagildi í textalínu kemur síun texta eða strengja með samanburðaraðgerðum sér vel fyrir notendur Awk skipana.

Í þessum hluta Awk seríunnar munum við skoða hvernig þú getur síað texta eða strengi með því að nota samanburðaraðgerðir. Ef þú ert forritari verður þú nú þegar að þekkja samanburðarfyrirtæki en þeir sem eru það ekki, leyfðu mér að útskýra í kaflanum hér að neðan.

Samanburðarvirkjar í Awk eru notaðir til að bera saman gildi talna eða strengja og þeir innihalda eftirfarandi:

  1. > – stærri en
  2. < – minna en
  3. >= – stærra en eða jafnt og
  4. <= – minna en eða jafnt og
  5. == – jafnt og
  6. != – ekki jafnt og
  7. eitt_gildi ~/mynstur/ – satt ef eitthvað_gildi passar við mynstur
  8. eitthvað_gildi !~/mynstur/ – satt ef eitthvað_gildi passar ekki við mynstur

Nú þegar við höfum skoðað hina ýmsu samanburðaraðila í Awk, skulum við skilja þá betur með því að nota dæmi.

Í þessu dæmi erum við með skrá sem heitir food_list.txt sem er innkaupalisti fyrir mismunandi matvörur og mig langar að merkja matvöru sem er minna en eða jafnt 20 með því að bæta við (**) í lok hverrar línu.

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

Almenn setningafræði til að nota samanburðaraðgerðir í Awk er:

# expression { actions; }

Til að ná ofangreindu markmiði verð ég að keyra skipunina hér að neðan:

# 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	**

Í dæminu hér að ofan eru tveir mikilvægir hlutir sem gerast:

  1. Fyrsta tjáningin { action ; } samsetning, $3 <= 30 { printf “%s %s , $0,** ; } prentar út línur með magn minna en eða jafnt og 30 og bætir við (**) í lok hverrar línu. Hægt er að nálgast gildi magns með því að nota $3 reitbreytu.
  2. Önnur tjáningin { action ; } samsetning, $3 > 30 { print $0 ;} prentar út línur óbreyttar þar sem magn þeirra er meira en 30.

Enn eitt dæmið:

# 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

Í þessu dæmi viljum við gefa til kynna línur með magn minna eða jafnt og 20 með orðinu (TRUE) í lokin.

Samantekt

Þetta er kynningarkennsla til að bera saman rekstraraðila í Awk, þess vegna þarftu að prófa marga aðra valkosti og uppgötva meira.

Ef upp koma vandamál sem þú stendur frammi fyrir eða einhverjar viðbætur sem þú hefur í huga, sendu þá athugasemd í athugasemdareitinn hér að neðan. Mundu að lesa næsta hluta Awk seríunnar þar sem ég mun fara með þig í gegnum samsettar tjáningar.