Slik bruker du sammenligningsoperatører med Awk i Linux - Del 4
Når du arbeider med numeriske verdier eller strengverdier i en tekstlinje, er filtrering av tekst eller strenger ved hjelp av sammenligningsoperatorer nyttig for brukere av Awk-kommandoer.
I denne delen av Awk-serien skal vi se på hvordan du kan filtrere tekst eller strenger ved å bruke sammenligningsoperatorer. Hvis du er en programmerer, må du allerede være kjent med sammenligningsoperatører, men de som ikke er det, la meg forklare i avsnittet nedenfor.
Hva er sammenligningsoperatører i Awk?
Sammenligningsoperatorer i Awk brukes til å sammenligne verdien av tall eller strenger, og de inkluderer følgende:
>
– større enn<
– mindre enn>=
– større enn eller lik<=
– mindre enn eller lik==
– lik!=
– ikke liksome_value ~/pattern/
– sant hvis noen_verdi samsvarer med mønstersome_value !~/pattern/
– sant hvis noen_verdi ikke samsvarer med mønsteret
Nå som vi har sett på de forskjellige sammenligningsoperatørene i Awk, la oss forstå dem bedre ved å bruke et eksempel.
I dette eksemplet har vi en fil som heter food_list.txt som er en handleliste for forskjellige matvarer, og jeg vil gjerne merke matvarer hvis mengde er mindre enn eller lik 20 ved å legge til ( **)
på slutten av hver linje.
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
Den generelle syntaksen for bruk av sammenligningsoperatorer i Awk er:
expression { actions; }
For å oppnå målet ovenfor, må jeg kjøre kommandoen nedenfor:
# 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 **
I eksemplet ovenfor er det to viktige ting som skjer:
- Det første uttrykket { handling ; } kombinasjon, $3 <= 30 { printf “%s\t%s\n”, $0,”**” ; } skriver ut linjer med et antall mindre enn eller lik 30 og legger til en (**) på slutten av hver linje. Verdien av kvantitet er tilgjengelig ved å bruke $3 feltvariabel.
- Det andre uttrykket { handling ; } kombinasjon, $3 > 30 { print $0 ;} skriver ut linjer uendret siden antallet er større enn 30.
Et eksempel til:
# 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
I dette eksemplet ønsker vi å angi linjer med mengde mindre eller lik 20 med ordet (TRUE) på slutten.
Sammendrag
Dette er en introduksjonsveiledning for sammenligningsoperatører i Awk, derfor må du prøve ut mange andre alternativer og finne ut mer.
I tilfelle problemer du møter eller tillegg du har i tankene, slipp en kommentar i kommentarfeltet nedenfor. Husk å lese neste del av Awk-serien hvor jeg tar deg gjennom sammensatte uttrykk.