Bedingte Aussagen in awk
- 4736
- 170
- Aileen Dylus
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:
- IF-ELSE-Aussagen mit awk
- Schalteranweisung mit awk
- 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 ist123456 | if (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.txt1 | awk '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.txt1 | awk '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 übereinstimmt1234567891011 | Switch (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.txt1 | awk '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: Falschwert1 | (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.txt1 | awk '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.