Bedingte Aussagen in awk

Bedingte Aussagen in awk

Bedingte Aussagen sind eine der leistungsstärksten Merkmale von AWK, mit der Benutzer verschiedene Befehle basierend auf den Werten von Variablen oder Ausdrücken ausführen können. Dies ermöglicht die Erstellung komplexer Logik in AWK -Skripten und erleichtert die Ausführung fortschrittlicher Textverarbeitungsaufgaben.

In diesem Tutorial behandeln wir die Grundlagen der bedingten Aussagen in awk, einschließlich der Syntax und Verwendung der Anweisung "If-ELSE". Zum Beispiel:

  1. IF-ELSE-Aussagen mit awk
  2. Schalteranweisung mit awk
  3. Ternäre Operatoren mit awk

If-ELSE-Anweisung mit awk

Der 'ansonsten' Aussage ist eine grundlegende bedingte Aussage in awk. Sie können verschiedene Befehle angeben, die Sie basierend auf einer bestimmten Bedingung ausführen können. Die Syntax für die 'ansonsten' Aussage lautet wie folgt:

if (Bedingung) # Befehle auszuführen, wenn die Bedingung true ist else # Befehle auszuführen, wenn die Bedingung falsch ist
123456if (Bedingung) # Befehle auszuführen, wenn die Bedingung true ist else # Befehle auszuführen, wenn die Bedingung falsch ist

Hier, 'Zustand' ist ein boolescher Ausdruck, der entweder wahr oder falsch bewertet. Wenn die Bedingung wahr ist, folgen die Befehle in den folgenden lockigen Zahnspangen 'Wenn' werden ausgeführt. Wenn die Bedingung falsch ist, folgen die Befehle in den folgenden lockigen Klammern 'anders' werden ausgeführt.

Angenommen, wir haben eine Datei mit einer Liste von Zahlen, und wir möchten die Zahlen mehr als 10 drucken. Wir können die verwenden 'ansonsten' Aussage, um diese Aufgabe wie folgt zu erfüllen:

awk 'if ($ 1> 10) print $ 1' Zahlen.txt
1awk 'if ($ 1> 10) print $ 1' Zahlen.txt

Hier das 'Wenn' Anweisung prüft, ob das erste Feld ($ 1) ist größer als 10. Wenn ja, wird die Nummer gedruckt. Wenn dies nicht der Fall ist, passiert nichts.

Sie können auch die verwenden 'ansonsten' Aussage, um komplexere Aufgaben auszuführen. Nehmen wir beispielsweise an, wir haben eine Datei mit einer Liste von Benutzernamen und ihren Alter. Wir können die Anweisung "If-ELSE" verwenden, um diese Aufgabe wie folgt zu erfüllen:

awk 'if ($ 2> 18) print $ 1 else print "Benutzer ist nicht alt genug"' Benutzer.txt
1awk 'if ($ 2> 18) print $ 1 else print "Benutzer ist nicht alt genug"' Benutzer.txt

Hier das 'Wenn' Anweisung prüft, ob das zweite Feld ($ 2) ist größer als 18. Wenn ja, wird der Benutzername gedruckt. Wenn dies nicht der Fall ist, wird der Zeichenfolge „Benutzer nicht alt genug“ gedruckt.

Schalteranweisung mit awk

Der 'schalten' Mit der Anweisung in awk können Sie verschiedene Befehle basierend auf mehreren Bedingungen ausführen. Es bietet eine prägnantere Möglichkeit, mehrere auszudrücken 'ansonsten' Aussagen. Die Syntax für die 'schalten' Aussage lautet wie folgt:

Switch (Variable) Fall Value1: # Befehle ausführen, wenn variable == value1 break case value2: # Befehle zum Ausführen von variable == value2 break… Standard: # Befehle ausführen, wenn keiner der Fälle übereinstimmt
1234567891011Switch (Variable) Case Value1: # Befehle zum Ausführen, wenn variable == value1 break case value2: # Befehle zum Ausführen von Variable == Value2 Break ... Standard: # Befehle zum Ausführen, wenn keiner der Fälle übereinstimmt

Hier, 'Variable' ist die Variable oder der Ausdruck, den Sie mit verschiedenen Werten vergleichen möchten. 'Wert1' ', 'Wert2' ', usw. sind die unterschiedlichen Werte, mit denen Sie vergleichen möchten. Der 'brechen' Anweisung wird verwendet, um die zu verlassen 'schalten' Aussage nach einem Match gefunden. Der 'Standard' Das Schlüsselwort wird verwendet, um Befehle anzugeben, die ausgeführt werden sollen, wenn keiner der Fälle übereinstimmt.

Angenommen, wir haben eine Datei mit einer Liste von Programmiersprachen und möchten den Namen der Programmiersprache basierend auf der Dateierweiterung drucken. Wir können die verwenden 'schalten' Aussage, um diese Aufgabe wie folgt zu erfüllen:

awk 'switch ($ nf) case "py": drucken "python"; brechen; Fall "RB": Druck "Ruby"; brechen; Fall "JS": Drucken "JavaScript"; brechen; Standard: Drucken Sie "Unbekannte" 'Sprachen.txt
1awk 'switch ($ nf) case "py": drucken "python"; brechen; Fall "RB": Druck "Ruby"; brechen; Fall "JS": Drucken "JavaScript"; brechen; Standard: Drucken Sie "Unbekannte" 'Sprachen.txt

Hier benutzen wir die 'schalten' Erklärung zum Vergleich des letzten Feldes ($ Nf) gegen verschiedene Werte ('py', 'rb', 'js'). Wenn der Wert übereinstimmt, drucken wir den Namen der Programmiersprache. Wenn es nicht übereinstimmt, drucken wir "Unbekannt".

Ternäre Operatoren mit awk

Der "Ternärer Operator" in awk ist eine Kurzversion der 'ansonsten' Stellungnahme. Sie können einen einfachen IF-ELSE-Betrieb in einer einzelnen Zeile ausführen. Die Syntax für den ternären Operator ist wie folgt:

(Zustand) ? wahrer Wert: Falschwert
1(Zustand) ? wahrer Wert: Falschwert

Hier, 'Zustand'Ist der boolesche Ausdruck, den Sie bewerten möchten. 'wahrer Wert' ist der Wert zur Rückgabe, wenn die Bedingung wahr ist. "Falschwert" ist der Wert zur Rückgabe, wenn die Bedingung falsch ist.

Angenommen, wir haben eine Datei mit einer Liste von Zahlen, und wir möchten drucken "Selbst" Wenn die Zahl gleichmäßig ist, und "Seltsam" Wenn die Zahl ungerade ist. Wir können den ternären Operator verwenden, um diese Aufgabe wie folgt zu erfüllen:

awk 'print ($ 1 % 2 == 0) ? "Sogar": "seltsame" 'Zahlen.txt
1awk 'print ($ 1 % 2 == 0) ? "Sogar": "seltsame" 'Zahlen.txt

Hier verwenden wir den ternären Operator, um zu überprüfen, ob die Nummer im ersten Feld ($ 1) ist gerade oder seltsam. Wenn es gerade ist, drucken wir "Selbst". Wenn es seltsam ist, drucken wir "Seltsam".

Abschluss

Zusammenfassend sind bedingte Aussagen eine leistungsstarke Funktion von AWK, mit der Benutzer erweiterte Textverarbeitungsaufgaben ausführen können. Der 'ansonsten' Anweisung ist eine grundlegende bedingte Anweisung, mit der Sie verschiedene Befehle basierend auf einer bestimmten Bedingung ausführen können. Durch Beherrschen der 'ansonsten' Anweisung und andere bedingte Aussagen können Sie in Ihrem awk -Skript effektiver und effizienter werden und komplexe Textverarbeitungsaufgaben problemlos erledigen.