Kaip naudoti palyginimo operatorius su Awk sistemoje Linux – 4 dalis
Nagrinėjant skaitines arba eilučių reikšmes teksto eilutėje, teksto ar eilučių filtravimas naudojant palyginimo operatorius yra naudingas komandos Awk naudotojams.
Šioje „Awk“ serijos dalyje apžvelgsime, kaip galite filtruoti tekstą ar eilutes naudodami palyginimo operatorius. Jei esate programuotojas, jūs jau turite būti susipažinę su palyginimo operatoriais, bet tie, kurie to dar nežino, leiskite paaiškinti toliau pateiktame skyriuje.
Kas yra „Awk“ palyginimo operatoriai?
Awk palyginimo operatoriai yra naudojami skaičių ar eilučių vertei palyginti ir jie apima:
> – didesnis nei<
– mažiau nei>=
– didesnis arba lygus<=
– mažesnis arba lygus==
– lygus!=
– nelygusome_value ~/modelis/
– tiesa, jei kai kurios_vertės atitinka šablonąsome_value !~/pattern/
– tiesa, jei tam tikra_vertė neatitinka šablono
Dabar, kai pažvelgėme į įvairius Awk palyginimo operatorius, leiskite mums geriau suprasti juos naudodami pavyzdį.
Šiame pavyzdyje turime failą pavadinimu maisto_sąrašas.txt, kuris yra įvairių maisto produktų pirkinių sąrašas. Norėčiau pažymėti maisto produktus, kurių kiekis yra mažesnis arba lygus 20, pridėdamas ( **)
kiekvienos eilutės pabaigoje.
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
Bendra palyginimo operatorių naudojimo Awk sintaksė yra tokia:
expression { actions; }
Norėdami pasiekti aukščiau nurodytą tikslą, turėsiu paleisti toliau pateiktą komandą:
# 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 **
Aukščiau pateiktame pavyzdyje atsitinka du svarbūs dalykai:
- Pirmoji išraiška { action ; } derinys, 3 USD <= 30 { printf “%s\t%s\n”, $0,”**” ; } išspausdina eilutes, kurių kiekis mažesnis arba lygus 30, ir kiekvienos eilutės pabaigoje prideda (**). Kiekio vertė pasiekiama naudojant $3 lauko kintamąjį.
- Antroji išraiška { action ; } derinys, 3 USD > 30 { print $0 ;} spausdina nepakitusias eilutes, nes jų kiekis yra didesnis nei 30.
Dar vienas pavyzdys:
# 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
Šiame pavyzdyje norime nurodyti eilutes, kurių kiekis yra mažesnis arba lygus 20, kurių pabaigoje yra žodis (TRUE).
Santrauka
Tai įvadinė pamoka apie palyginimo operatorius Awk, todėl turite išbandyti daugybę kitų parinkčių ir atrasti daugiau.
Jei turite kokių nors problemų ar turite kokių nors papildymų, palikite komentarą toliau pateiktame komentarų skyriuje. Nepamirškite perskaityti kitos Awk serijos dalies, kurioje paaiškinsiu sudėtines išraiškas.