Wenn Sie sich alle Awk-Beispiele ansehen, die wir bisher behandelt haben, gleich zu Beginn des Awk-Serie, werden Sie feststellen, dass alle Befehle in den verschiedenen Beispielen sequentiell, also nacheinander ausgeführt werden. Aber in bestimmten Situationen möchten wir vielleicht einige ausführen Textfilterungsoperationen basierend auf einigen Bedingungen setzt hier der Ansatz der Flusssteuerungsanweisungen an.
Es gibt verschiedene Flusssteuerungsanweisungen in Awk Programmierung und dazu gehören:
Im Rahmen dieser Reihe werden wir jedoch Folgendes erläutern: ansonsten
, Pro
, während
und tun während
Aussagen. Denken Sie daran, dass wir bereits durchgelaufen sind wie man die nächste Anweisung in Teil 6 verwendet von diesem Awk-Serie.
Die erwartete Syntax der if-Anweisung
ist ähnlich wie die Schale if-Anweisung:
if (Bedingung1) { Aktionen1. } sonst { Aktionen2. }
In der obigen Syntax Bedingung1
und Bedingung2
sind Awk-Ausdrücke, und Aktionen1
und Aktionen2
sind Awk-Befehle, die ausgeführt werden, wenn die jeweiligen Bedingungen erfüllt sind.
Wann Bedingung1 zufrieden ist, das heißt, es ist wahr, dann Aktionen1 ausgeführt wird und die if-Anweisung Ausfahrten, sonst Aktionen2 ausgeführt wird.
Das if-Anweisung auch erweiterbar auf a if-else_if-else
Aussage wie folgt:
wenn (Bedingung1) { Aktionen1. } Sonst wenn (Bedingungen2) { Aktionen2. } sonst { Aktionen3. }
Für das obige Formular, wenn Bedingung1 stimmt dann Aktionen1 ausgeführt wird und die if-Anweisung Ausfahrten, sonst Bedingung2 ausgewertet und wenn es wahr ist, dann Aktionen2 ausgeführt wird und die if-Anweisung Ausgänge. Wenn jedoch Bedingung2 ist dann falsch, Aktionen3 ausgeführt wird und die if-Anweisung Ausgänge.
Hier ist ein Anwendungsfall if-Anweisungen, wir haben eine Liste von Benutzer und ihre Alter in der Datei gespeichert, user.txt.
Wir möchten eine Erklärung drucken, die den Namen eines Benutzers angibt und ob das Alter des Benutzers jünger oder älter ist als 25 Jahre alt.
[E-Mail geschützt] ~ $Katzenbenutzer.txt
Sarah L35F. Aaron Kili 40 M. John Doo 20 M. Kili Seth 49 M
Wir können ein kurzes Shell-Skript schreiben, um unsere obige Aufgabe auszuführen, hier ist der Inhalt des Skripts:
#!/bin/bash. awk ' { if ( $3 <= 25 ){ print "Benutzer",$1,$2,"ist jünger als 25 Jahre."; } else { print "Benutzer",$1,$2,"ist älter als 25 Jahre"; } }' ~/users.txt.
Speichern Sie dann die Datei und beenden Sie, machen Sie das Skript ausführbar und führen Sie es wie folgt aus:
$ chmod +x test.sh. $ ./test.sh.
Userin Sarah L ist über 25 Jahre alt. User Aaron Kili ist über 25 Jahre alt. Benutzer John Doo ist weniger als 25 Jahre alt. User Kili Seth ist über 25 Jahre alt.
Falls Sie einige Awk-Befehle in einer Schleife ausführen möchten, dann für Aussage bietet Ihnen dazu eine geeignete Möglichkeit mit der folgenden Syntax:
Hier wird der Ansatz einfach durch die Verwendung eines Zählers definiert, um die Schleifenausführung zu steuern, zuerst müssen Sie Initialisieren Sie den Zähler, führen Sie ihn dann gegen eine Testbedingung aus, wenn er wahr ist, führen Sie die Aktionen aus und erhöhen Sie schließlich der Zähler. Die Schleife endet, wenn der Zähler die Bedingung nicht erfüllt.
für ( Gegeninitialisierung; Testbedingung; Gegeninkrement ){ Aktionen. }
Der folgende Awk-Befehl zeigt, wie die für Aussage funktioniert, wo wir die Zahlen drucken wollen 0-10:
$ awk 'BEGIN{ for (counter=0;counter<=10;counter++){ print counter} }'
0. 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
Die konventionelle Syntax des while-Anweisung ist wie folgt:
while ( Bedingung ) { Aktionen. }
Die Bedingung ist ein Awk-Ausdruck und Aktionen sind Zeilen von Awk-Befehlen, die ausgeführt werden, wenn die Bedingung wahr ist.
Unten ist ein Skript zur Veranschaulichung der Verwendung von while-Anweisung um die Zahlen auszudrucken 0-10:
#!/bin/bash. awk ' BEGIN{ counter=0; Während (Zähler <=10) { Zähler drucken; Zähler+=1; } }
Speichern Sie die Datei, machen Sie das Skript ausführbar und führen Sie es dann aus:
$ chmod +x test.sh. $ ./test.sh.
0. 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
Es ist eine Modifikation des while-Anweisung oben, mit der folgenden zugrunde liegenden Syntax:
tun { Aktionen. } while (Bedingung)
Der kleine Unterschied besteht darin, dass unter tun während, werden die Awk-Befehle ausgeführt, bevor die Bedingung ausgewertet wird. Anhand des Beispiels unter while-Anweisung oben können wir die Verwendung von veranschaulichen tun während durch Ändern des Awk-Befehls im test.sh Skript wie folgt:
#!/bin/bash awk ' BEGIN{ counter=0; do{ Zähler drucken; Zähler+=1; } while (Zähler<=10) } '
Nachdem Sie das Skript geändert haben, speichern Sie die Datei und beenden Sie das Programm. Machen Sie dann das Skript ausführbar und führen Sie es wie folgt aus:
$ chmod +x test.sh. $ ./test.sh.
0. 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
Dies ist kein umfassender Leitfaden zu Awk-Flusssteuerungsanweisungen, wie ich bereits erwähnt habe, es gibt mehrere andere Flusskontrollanweisungen in Awk.
Dennoch ist dieser Teil der Awk-Serie soll Ihnen eine klare grundlegende Vorstellung davon vermitteln, wie die Ausführung von Awk-Befehlen unter bestimmten Bedingungen gesteuert werden kann.
Sie können auch den Rest der Flusssteuerungsanweisungen näher erläutern, um ein besseres Verständnis des Themas zu erhalten. Schließlich werden wir im nächsten Abschnitt der Awk-Reihe zum Schreiben von Awk-Skripten übergehen.