Összehasonlító operátorok használata az Awk-val Linuxban – 4. rész
Amikor egy szövegsorban numerikus vagy karakterlánc-értékekkel foglalkozik, a szövegek vagy karakterláncok összehasonlító operátorokkal történő szűrése jól jöhet az Awk parancsot használók számára.
Az Awk sorozatnak ebben a részében megvizsgáljuk, hogyan szűrhet szövegeket vagy karakterláncokat összehasonlító operátorok segítségével. Ha Ön programozó, akkor már ismernie kell az összehasonlító operátorokat, de aki még nem, hadd magyarázzam el az alábbi részben.
Mik azok az összehasonlító operátorok az Awk-ban?
Az Awk összehasonlító operátorai a számok vagy karakterláncok értékének összehasonlítására szolgálnak, és a következőket tartalmazzák:
>
– nagyobb, mint<
– kevesebb, mint>=
– nagyobb vagy egyenlő, mint<=
– kisebb vagy egyenlő==
– egyenlő!=
– nem egyenlővalamilyen_érték ~/minta/
– igaz, ha a some_value megegyezik a mintávalvalamilyen_érték !~/minta/
– igaz, ha a valamilyen_érték nem egyezik a mintával
Most, hogy megvizsgáltuk az Awk különböző összehasonlító operátorait, egy példa segítségével értsük meg őket jobban.
Ebben a példában van egy food_list.txt nevű fájlunk, amely különböző élelmiszerek bevásárlólistája, és szeretném megjelölni azokat az élelmiszereket, amelyek mennyisége kisebb vagy egyenlő 20-nál a ( **)
az egyes sorok végén.
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
Az összehasonlító operátorok használatának általános szintaxisa az Awk-ban a következő:
expression { actions; }
A fenti cél eléréséhez az alábbi parancsot kell futtatnom:
# 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 **
A fenti példában két fontos dolog történik:
- Az első kifejezés { action ; } kombináció, $3 <= 30 { printf “%s\t%s\n”, $0”,**” ; A } kinyomtatja a 30-nál kisebb vagy azzal egyenlő számú sorokat, és minden sor végéhez hozzáad egy (**)-t. A mennyiség értéke a $3 mezőváltozó használatával érhető el.
- A második kifejezés { action ; } kombináció, a $3 > 30 { print $0 ;} változatlan formában nyomtatja ki a sorokat, mivel mennyiségük nagyobb, mint 30.
Még egy példa:
# 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
Ebben a példában a 20-nál kisebb vagy egyenlő mennyiségű sorokat az (TRUE) szóval a végén szeretnénk jelezni.
Összegzés
Ez egy bevezető útmutató az Awk összehasonlító operátoraihoz, ezért sok más lehetőséget is ki kell próbálnia, és többet kell felfedeznie.
Ha bármilyen problémával szembesül, vagy bármilyen kiegészítést szeretne, írjon megjegyzést az alábbi megjegyzés szakaszba. Ne felejtse el elolvasni az Awk sorozat következő részét, ahol végigvezetem az összetett kifejezéseken.