Verwendung von Vergleichsoperatoren mit Awk unter Linux – Teil 4
Beim Umgang mit numerischen Werten oder Zeichenfolgenwerten in einer Textzeile ist das Filtern von Text oder Zeichenfolgen mithilfe von Vergleichsoperatoren für Benutzer des Awk-Befehls praktisch.
In diesem Teil der Awk-Reihe werfen wir einen Blick darauf, wie Sie Text oder Zeichenfolgen mithilfe von Vergleichsoperatoren filtern können. Wenn Sie Programmierer sind, müssen Sie bereits mit Vergleichsoperatoren vertraut sein. Diejenigen, die es nicht sind, erkläre ich Ihnen im folgenden Abschnitt.
Was sind Vergleichsoperatoren in Awk?
Vergleichsoperatoren in Awk werden zum Vergleichen des Werts von Zahlen oder Zeichenfolgen verwendet und umfassen Folgendes:
>
– größer als<
– kleiner als>=
– größer oder gleich<=
– kleiner oder gleich==
– gleich!=
– ungleichsome_value ~/pattern/
– wahr, wenn some_value mit dem Muster übereinstimmtsome_value !~/pattern/
– wahr, wenn some_value nicht mit dem Muster übereinstimmt
Nachdem wir uns nun die verschiedenen Vergleichsoperatoren in Awk angesehen haben, wollen wir sie anhand eines Beispiels besser verstehen.
In diesem Beispiel haben wir eine Datei mit dem Namen food_list.txt, die eine Einkaufsliste für verschiedene Lebensmittel ist, und ich möchte Lebensmittel kennzeichnen, deren Menge kleiner oder gleich 20 ist, indem ich ( **)
am Ende jeder Zeile.
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
Die allgemeine Syntax für die Verwendung von Vergleichsoperatoren in Awk lautet:
expression { actions; }
Um das oben genannte Ziel zu erreichen, muss ich den folgenden Befehl ausführen:
# 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 **
Im obigen Beispiel passieren zwei wichtige Dinge:
- Der erste Ausdruck { action ; Kombination, $3 <= 30 { printf „%s\t%s\n“, $0“,**“ ; druckt Zeilen mit einer Menge kleiner oder gleich 30 aus und fügt am Ende jeder Zeile ein (**) hinzu. Auf den Mengenwert wird über die Feldvariable $3 zugegriffen.
- Der zweite Ausdruck { action ; -Kombination, $3 > 30 { print $0 ;} druckt Zeilen unverändert aus, da ihre Anzahl größer als 30 ist.
Noch ein Beispiel:
# 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
In diesem Beispiel möchten wir Zeilen mit einer Menge kleiner oder gleich 20 mit dem Wort (TRUE) am Ende kennzeichnen.
Zusammenfassung
Dies ist ein Einführungstutorial zu Vergleichsoperatoren in Awk. Sie müssen daher viele andere Optionen ausprobieren und mehr entdecken.
Wenn Sie auf Probleme stoßen oder Ergänzungen im Sinn haben, hinterlassen Sie einen Kommentar im Kommentarbereich unten. Denken Sie daran, den nächsten Teil der Awk-Reihe zu lesen, in dem ich Sie durch zusammengesetzte Ausdrücke führe.