So verwenden Sie Flusssteuerungsanweisungen in awk - Teil 12

So verwenden Sie Flusssteuerungsanweisungen in awk - Teil 12

Wenn Sie alle Beispiele, die wir bisher bis zum Beginn der AWK -Serie bisher behandelt haben, überprüfen, werden Sie feststellen, dass alle Befehle in den verschiedenen Beispielen nacheinander ausgeführt werden. In bestimmten Situationen möchten wir jedoch einige Textfiltervorgänge anhand einiger Bedingungen ausführen.

Verwenden Sie Flusssteuerungsanweisungen in awk

Es gibt verschiedene Anweisungen zur Durchflussregelung in der awk -Programmierung, und dazu gehören:

  1. IF-ELSE-Aussage
  2. Für Erklärung
  3. Während der Aussage
  4. DO-während
  5. Break -Erklärung
  6. Fortsetzung der Erklärung
  7. Nächste Aussage
  8. NEXTFILE ARSICHT
  9. Aussagenerklärung

Für den Umfang dieser Serie werden wir jedoch nachgeben: ansonsten, für, während Und tu während Aussagen. Denken Sie daran, dass wir bereits in Teil 6 dieser AWK -Serie die nächste Anweisung verwendet haben.

1. Die IF-ELSE-Anweisung

Die erwartete Syntax der wenn Anweisung ist ähnlich wie bei der Schale wenn Anweisung:

if (condition1) actions1 else actions2 

In der obigen Syntax, Bedingung1 Und Bedingung2 sind awk Ausdruck und Aktionen1 Und Aktionen2 Werden awk -Befehle ausgeführt, wenn die jeweiligen Bedingungen erfüllt sind.

Wenn Bedingung1 ist zufrieden, was bedeutet, dass es wahr ist, dann Aktionen1 wird ausgeführt und die wenn Anweisung Ausgänge, sonst Aktionen2 wird ausgeführt.

Der wenn Anweisung kann auch auf a erweitert werden If-ELSE_IF-ELSE Aussage wie unten:

if (condition1) actions1 else if (Bedingungen2) actions2 else actions3 

Für die obige Form, wenn Bedingung1 ist dann wahr, dann Aktionen1 wird ausgeführt und die wenn Anweisung Ausgänge, sonst Bedingung2 wird bewertet und wenn es wahr ist, dann wird dann Aktionen2 wird ausgeführt und die wenn Anweisung Ausgänge. Allerdings wann Bedingung2 ist dann falsch, Aktionen3 wird ausgeführt und die wenn Anweisung Ausgänge.

Hier ist ein Fall, bei dem Sie verwendet werden Wenn Aussagen, Wir haben eine Liste von Benutzer und ihre Alter in der Datei gespeichert, Benutzer.txt.

Wir möchten eine Anweisung drucken, die den Namen eines Benutzers angibt und ob das Alter des Benutzers geringer oder mehr ist als 25 Jahre alt.

[E -Mail geschützt] ~ $ Katzenbenutzer.txt Sarah L 35 F Aaron Kili 40 M John Doo 20 m Kili Seth 49 m 

Wir können ein kurzes Shell -Skript schreiben, um unseren Job oben auszuführen. Hier ist der Inhalt des Skripts:

#!/bin/bash awk 'if ($ 3 <= 25 ) print "User",$1,$2,"is less than 25 years old." ;  else  print "User",$1,$2,"is more than 25 years old" ;  ' ~/users.txt 

Speichern Sie dann die Datei und beenden Sie das Skript ausführbar und führen Sie sie wie folgt aus:

$ chmod +x Test.Sh $ ./prüfen.Sch 
Probenausgabe
Benutzer Sarah L ist mehr als 25 Jahre alter Benutzer Aaron Kili ist mehr als 25 Jahre alter Benutzer John Doo ist weniger als 25 Jahre alt. Benutzer Kili Seth ist mehr als 25 Jahre alt 

2. Die für die Aussage

Falls Sie einige awk -Befehle in einer Schleife ausführen möchten, dann die dann die Für Erklärung bietet Ihnen eine geeignete Möglichkeit, dies zu tun, mit der folgenden Syntax:

Hier wird der Ansatz einfach durch die Verwendung eines Zählers zur Steuerung der Schleifenausführung definiert. Zuerst müssen Sie den Zähler initialisieren und dann gegen eine Testbedingung ausführen, falls er wahr ist, die Aktionen ausführen und schließlich den Zähler erhöhen. Die Schleife endet, wenn der Zähler den Zustand nicht erfüllt.

für (Gegeninitialisierung; Test-Kondition; Gegeninkrement) Aktionen 

Der folgende awk -Befehl zeigt, wie der Für Erklärung funktioniert, wo wir die Zahlen drucken möchten 0-10:

$ awk 'begin für (counter = 0; counter<=10;counter++) print counter ' 
Probenausgabe
0 1 2 3 4 5 6 7 8 9 10 

3. Die while -Aussage

Die konventionelle Syntax der Während der Aussage 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, um die Verwendung von zu veranschaulichen Während der Aussage um die Zahlen zu drucken 0-10:

#!/bin/bash awk 'begin counter = 0; während (Zähler<=10) print counter; counter+=1 ;   

Speichern Sie die Datei und führen Sie das Skript aus, und führen Sie sie aus:

$ chmod +x Test.Sh $ ./prüfen.Sch 
Probenausgabe
0 1 2 3 4 5 6 7 8 9 10 

4. Die Do während der Erklärung

Es ist eine Modifikation der Während der Aussage Oben mit der folgenden zugrunde liegenden Syntax:

Aktionen während (Bedingung) 

Der geringfügige Unterschied ist, dass unter tu während, Die awk -Befehle werden ausgeführt, bevor die Bedingung bewertet wird. Verwenden des Beispiels unter Während der Aussage Oben können wir die Verwendung von veranschaulichen tu während Durch Ändern des awk -Befehls in der prüfen.Sch Skript wie folgt:

#!/bin/bash awk 'begin counter = 0; Do Print Counter; Zähler+= 1;  während (Zähler<=10)  ' 

Speichern Sie nach der Änderung des Skripts die Datei und beenden Sie. Machen Sie dann das Skript ausführbar und führen Sie es wie folgt aus:

$ chmod +x Test.Sh $ ./prüfen.Sch 
Probenausgabe
0 1 2 3 4 5 6 7 8 9 10 

Abschluss

Dies ist keine umfassende Anleitung zu Aussagen der Flusskontrolle, wie ich bereits erwähnt hatte, es gibt mehrere andere Durchflussregelungsanweisungen in awk.

Dieser Teil der AWK -Serie sollte Ihnen jedoch eine klare grundlegende Vorstellung davon geben, wie die Ausführung von awk -Befehlen basierend auf bestimmten Bedingungen gesteuert werden kann.

Sie können auch mehr über den Rest der Flusskontrollanweisungen erläutern, um mehr Verständnis für den Gegenstand zu erlangen. Schließlich werden wir im nächsten Abschnitt der AWK -Serie in das Schreiben von awk -Skripten eingehen.