Kako uporabljati primerjalne operaterje z Awk v Linuxu - 4. del


Pri obravnavi številskih ali nizovnih vrednosti v vrstici besedila je filtriranje besedila ali nizov z uporabo operatorjev primerjave uporabno za uporabnike ukaza Awk.

V tem delu serije Awk si bomo ogledali, kako lahko filtrirate besedilo ali nize z uporabo primerjalnih operatorjev. Če ste programer, morate že poznati operaterje primerjave, toda tiste, ki to niso, naj pojasnim v spodnjem razdelku.

Primerjalni operatorji v programu Awk se uporabljajo za primerjavo vrednosti števil ali nizov in vključujejo naslednje:

  1. > - večja od
  2. < - manj kot
  3. > = - večja ali enaka
  4. <= - manj ali enako
  5. == - enako
  6. ! = - ni enako
  7. some_value ~/pattern/ - true, če se nekaj_vrednost ujema z vzorcem
  8. neka_vrednost! ~/vzorec/ - true, če se neka vrednost ne ujema z vzorcem

Zdaj, ko smo si ogledali različne primerjalne operaterje v programu Awk, jih na primeru bolje razumemo.

V tem primeru imamo datoteko z imenom food_list.txt, ki je nakupovalni seznam za različne prehrambene izdelke, in rad bi označil živila, katerih količina je manjša ali enaka 20, tako da dodamo (**) na koncu vsake vrstice.

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

Splošna sintaksa za uporabo operatorjev primerjave v Awk je:

# expression { actions; }

Za dosego zgornjega cilja bom moral zagnati spodnji ukaz:

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

V zgornjem primeru se zgodita dve pomembni stvari:

  1. Prvi izraz {action; } kombinacija, $3 <= 30 {printf “% s\t% s\n”, $0, ”**”; } izpiše vrstice s količino, manjšo ali enako 30, in na koncu vsake vrstice doda (**). Vrednost količine je dostopna s spremenljivko polja $3.
  2. Drugi izraz {action; } kombinacija, $3> 30 {print $0;} izpiše vrstice nespremenjene, saj je njihova količina večja od 30.

Še en primer:

# 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

V tem primeru želimo z besedo (TRUE) na koncu označiti vrstice s količino, ki je manjša ali enaka 20.

Povzetek

To je uvodna vadnica za primerjalne operaterje v programu Awk, zato morate preizkusiti številne druge možnosti in odkriti več.

V primeru kakršnih koli težav ali kakršnih koli dodatkov, ki jih imate v mislih, spustite komentar v spodnjem oddelku za komentarje. Ne pozabite prebrati naslednjega dela serije Awk, kjer vas bom popeljal skozi sestavljene izraze.