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:
>
– stærri en<
– minna en>=
– stærra en eða jafnt og<=
– minna en eða jafnt og==
– jafnt og!=
– ekki jafnt ogeitt_gildi ~/mynstur/
– satt ef eitthvað_gildi passar við mynstureitthvað_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:
- 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.
- Ö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.