GNU/Linux >> LINUX-Kenntnisse >  >> Linux

In der Schleife gefangen? Awk While, Do While, For Loop, Break, Continue, Exit Beispiele

Dieser Artikel ist Teil der fortlaufenden Reihe von Awk-Tutorial-Beispielen. In unseren früheren awk-Artikeln haben wir über awk print, benutzerdefinierte awk-Variablen, eingebaute awk-Variablen, awk-Operatoren und awk-Bedingungsanweisungen gesprochen.

Lassen Sie uns in diesem Artikel über awk loop sprechen Anweisungen – while, do while, for loops , break, Continue und exit-Anweisungen zusammen mit 7 praktischen Beispielen.

Awk-Schleifenanweisungen werden verwendet, um eine Reihe von Aktionen immer wieder nacheinander auszuführen. Es führt eine Anweisung wiederholt aus, solange die Bedingung wahr ist. Awk hat eine Reihe von Schleifenanweisungen wie in der Programmiersprache C.

Awk While-Schleife

Syntax:

while(condition)
	actions
  • while ist ein Schlüsselwort.
  • Bedingung ist bedingter Ausdruck
  • Aktionen sind der Körper der While-Schleife, die eine oder mehrere Anweisungen haben kann. Wenn Aktionen mehr als eine Anweisung haben, muss sie in geschweiften Klammern eingeschlossen werden.

Wie funktioniert es?Awk while Schleife überprüft zuerst die Bedingung, wenn die Bedingung wahr ist, führt sie die Liste der Aktionen aus. Nachdem die Aktionsausführung abgeschlossen ist, wird die Bedingung erneut überprüft, und wenn sie wahr ist, werden die Aktionen erneut ausgeführt. Dieser Vorgang wiederholt sich, bis die Bedingung falsch wird. Wenn die Bedingung in der ersten Iteration falsch zurückgibt, werden Aktionen nie ausgeführt.

1. Beispiel für eine Awk-While-Schleife:Erstellen Sie eine Zeichenfolge mit einer bestimmten Länge

$awk 'BEGIN { while (count++<50) string=string "x"; print string }'
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Das obige Beispiel verwendet den speziellen Block „BEGIN { }“, der vor allem anderen in einem Awk-Programm ausgeführt wird. In diesem Block hängt awk while loop das Zeichen „x“ 50 Mal an die Variable „string“ an. count ist eine Variable, die inkrementiert und überprüft wird, ob sie kleiner als 50 ist. Nach 50 Iterationen wird diese Bedingung also falsch.
Nachdem sie eine Schleife durchlaufen hat, wird die Variable „String“ ausgegeben. Da dieses Awk-Programm keinen Hauptteil hat, wird es nach Ausführung des BEGIN-Blocks beendet.

Awk Do-While-Schleife

Wie funktioniert es?Awk Do while Die Schleife wird als ausgangsgesteuerte Schleife bezeichnet, während die awk while-Schleife als eingangsgesteuerte Schleife bezeichnet wird. Weil die While-Schleife zuerst die Bedingung überprüft und dann entscheidet, ob der Körper ausgeführt wird oder nicht. Aber die awk tun während Schleife führt den Hauptteil einmal aus und wiederholt dann den Hauptteil, solange die Bedingung wahr ist.

Syntax:

do
action
while(condition)

Auch wenn die Bedingung falsch ist, wird die Aktion am Anfang mindestens einmal ausgeführt.

2. Awk Do While Loop Beispiel:Nachricht mindestens einmal drucken

$ awk 'BEGIN{
count=1;
do
print "This gets printed at least once";
while(count!=1)
}'
This gets printed at least once

Im obigen Skript wird die Druckanweisung mindestens einmal ausgeführt. Wenn Sie die While-Anweisung verwenden, wird zuerst die Bedingung überprüft, nachdem der Zähler auf 1 initialisiert wurde. Bei der ersten Iteration selbst ist die Bedingung falsch, sodass die Druckanweisung gewinnt. t wird ausgeführt, aber in do wird der erste Hauptteil ausgeführt, sodass die Druckanweisung ausgeführt wird.

Awk For Loop-Anweisung

Awk für Die Anweisung ist dieselbe wie die awk while-Schleife, aber ihre Syntax ist viel einfacher zu verwenden.

Syntax:

for(initialization;condition;increment/decrement)
actions

Wie funktioniert es?Awk für Die Anweisung beginnt mit der Ausführung der Initialisierung, überprüft dann die Bedingung, wenn die Bedingung wahr ist, führt sie die Aktionen aus, dann inkrementiert oder dekrementiert. Solange die Bedingung wahr ist, führt sie wiederholt die Aktion aus und erhöht/dekrementiert dann.

3. Beispiel für eine Awk-For-Schleife. Gibt die Summe der Felder in allen Zeilen aus.

$ awk '{ for (i = 1; i <= NF; i++) total = total+$i }; END { print total }'
12 23 34 45 56
34 56 23 45 23
351

Zunächst wird die Variable i auf 1 initialisiert, dann überprüft, ob i kleiner oder gleich der Gesamtzahl der Felder ist, dann werden alle Felder weiter addiert und schließlich wird die Addition in der Variablen total gespeichert. Geben Sie im END-Block einfach die Variable total.

aus

4. Beispiel einer Awk-For-Schleife:Gibt die Felder in umgekehrter Reihenfolge in jeder Zeile aus.

$ awk 'BEGIN{ORS="";}{ for (i=NF; i>0; i--) print $i," "; print "\n"; }' student-marks
77  84  78  2143  Jones
45  58  56  2321  Gondrol
37  38  2122  RinRao
95  97  87  2537  Edwin
47  30  2415  Dayan

Wir haben in unserem vorherigen Artikel über die eingebaute Variable awk NF gesprochen. Nach der Verarbeitung jeder Zeile setzt Awk die NF-Variable auf die Anzahl der in dieser Zeile gefundenen Felder.

Das obige Skript führt eine Schleife in umgekehrter Reihenfolge von NF bis 1 durch und gibt die Felder einzeln aus. Es beginnt mit dem Feld $NF, dann $(NF-1),…, $1. Danach gibt es ein Zeilenumbruchzeichen aus.

Lassen Sie uns nun einige andere Anweisungen sehen, die mit Schleifenanweisungen verwendet werden können.

Awk Break-Anweisung

Die Break-Anweisung wird verwendet, um aus der innersten Schleife (while, do-while und for-Schleife) herauszuspringen, die sie umschließt.

5. Awk-Break-Beispiel:Awk-Skript muss nur 10 Iterationen durchlaufen

$ awk 'BEGIN{while(1) print "forever"}'

Die obige awk while-Schleife gibt den String „forever“ für immer aus, weil die Bedingung never get fehlschlägt. Wenn Sie nun die Schleife nach den ersten 10 Iterationen stoppen möchten, sehen Sie sich das folgende Skript an.

$ awk 'BEGIN{
x=1;
while(1)
{
print "Iteration";
if ( x==10 )
break;
x++;
}}'
Iteration
Iteration
Iteration
Iteration
Iteration
Iteration
Iteration
Iteration
Iteration
Iteration

Im obigen Skript überprüft es den Wert der Variablen „x“, wenn es 10 erreicht, springt es einfach mit der break-Anweisung aus der Schleife.

Awk Continue-Anweisung

Die Continue-Anweisung überspringt den Rest des Schleifenkörpers, wodurch der nächste Zyklus um die Schleife herum sofort beginnt.

6. Awk Continue Beispiel:Führe die Schleife außer der 5. Iteration aus

$ awk 'BEGIN{
x=1;
while(x<=10)
{
if(x==5){
x++;
continue;
}
print "Value of x",x;x++;
}
}'
Value of x 1
Value of x 2
Value of x 3
Value of x 4
Value of x 6
Value of x 7
Value of x 8
Value of x 9
Value of x 10

Im obigen Skript wird der Wert von x bei jeder Iteration ausgegeben, aber wenn der Wert von x 5 erreicht, erhöht es einfach den Wert von x und fährt dann mit der nächsten Iteration fort, es wird den Rest der Schleife nicht ausführen. damit der Wert von x nicht für den Wert 5 ausgegeben wird. Die Continue-Anweisung hat nur dann eine Bedeutung, wenn Sie with in der Schleife verwenden.

Awk Exit-Anweisung

Die Exit-Anweisung bewirkt, dass das Skript die Ausführung der aktuellen Eingabe sofort beendet und die Verarbeitung der Eingabe beendet. Alle verbleibenden Eingaben werden ignoriert.

Exit akzeptiert jede ganze Zahl als Argument, das der Exit-Statuscode für den awk-Prozess ist. Wenn kein Argument angegeben wird, gibt exit den Status Null zurück.

7. Awk Exit Beispiel:Verlassen der Schleife bei der 5. Iteration

$ awk 'BEGIN{
x=1;
while(x<=10)
{
if(x==5){
exit;}
print "Value of x",x;x++;
}
}'
Value of x 1
Value of x 2
Value of x 3
Value of x 4

Sobald der Wert von x im obigen Skript 5 erreicht, wird exit aufgerufen, wodurch die Ausführung des awk-Prozesses gestoppt wird. Der Wert von x wird also nur bis 4 gedruckt, sobald er 5 erreicht, wird er beendet.

Empfohlene Lektüre

Sed- und Awk-101-Hacks, von Ramesh Natarajan . Ich verbringe mehrere Stunden am Tag in einer UNIX/Linux-Umgebung mit dem Umgang mit Textdateien (Daten-, Konfigurations- und Protokolldateien). Ich verwende Sed und Awk für alle meine Textbearbeitungsarbeiten. Basierend auf meiner Sed- und Awk-Erfahrung habe ich das Sed and Awk 101 Hacks eBook geschrieben, das 101 praktische Beispiele zu verschiedenen erweiterten Funktionen von Sed und Awk enthält, die Ihr UNIX / Linux-Leben verbessern werden. Auch wenn Sie Sed und Awk seit mehreren Jahren verwenden und dieses Buch noch nicht gelesen haben, tun Sie sich bitte einen Gefallen und lesen Sie dieses Buch. Sie werden von den Möglichkeiten der Dienstprogramme Sed und Awk begeistert sein.


Linux
  1. Linux-Exit-Befehl für Anfänger erklärt (mit Beispielen)

  2. Das Type Command Tutorial mit Beispielen für Anfänger

  3. Bleiben Sie auf dem Laufenden – Beispiele für Bash-For-, While- und Until-Loops

  4. Bash für Schleifenbeispiele

  5. So erhalten Sie den Exit-Status in einer Bash-Schleife

Das fc Command Tutorial mit Beispielen für Anfänger

Bash-Scripting – For-Schleife mit Beispielen erklärt

Regex-Tutorial für Linux-Beispiele (Sed &AWK).

Die for-Schleife in Shell-Skripten verstehen

Die While-Schleife in Shell-Skripten

Die Bash FOR-Schleife erklärt und vereinfacht