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:
>
- večja od-
<
- manj kot -
> =
- večja ali enaka -
<=
- manj ali enako -
==
- enako -
! =
- ni enako -
some_value ~/pattern/
- true, če se nekaj_vrednost ujema z vzorcem -
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:
- 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.
- 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.