Lernen wir verschiedene Arten von Schleifen kennen, die denselben Befehl mehrmals ausführen. Ein awk-Skript besteht aus drei Hauptteilen: den Funktionen BEGIN und END (beide optional) und der vom Benutzer geschriebenen Funktion, die jedes Mal ausgeführt werden soll. In gewisser Weise ist der Hauptteil von awk eine Schleife, da die Befehle in der Funktion einmal für jeden Datensatz ausgeführt werden. Manchmal möchten Sie jedoch mehrere Befehle für einen Datensatz ausführen. In diesem Fall müssen Sie eine Schleife verwenden. Es gibt viele Schleifentypen, die jeweils für unterschiedliche Szenarien geeignet sind. While-Schleife Eine While-Schleife testet einen Ausdruck und führt Befehle aus, wenn der Ausdruck wahr ist. Wenn der Ausdruck falsch wird, wird die Schleife unterbrochen. #!/bin/awk -f BEGINNEN { # Schleife durch 1 bis 10 ich = 1; während (i <= 10) { print i, "hoch zwei Potenz ist ", i*i; i = i+1; } Ausfahrt; } In diesem einfachen Beispiel druckt awk das Quadrat des ganzzahligen Werts in der Variablen i. Die Anweisung while (i <= 10) weist awk an, die Schleife nur auszuführen, wenn der Wert von i kleiner oder gleich 10 ist. Nachdem die Schleife zum letzten Mal ausgeführt wurde (der Wert von i ist 10), wird die Schleife beendet. do-while-Schleife Die do-while-Schleife führt die Befehle aus, die auf das Schlüsselwort do folgen. Am Ende jeder Iteration wird ein Testausdruck überprüft, um zu bestimmen, ob die Schleife beendet werden soll. Der Befehl wird nur wiederholt ausgeführt, solange der Testausdruck „true“ zurückgibt (d. h., die Bedingung, die die Schleife beendet, wurde noch nicht erreicht). Wenn der Testausdruck „false“ zurückgibt, wird die Schleife beendet, da die Bedingung zum Beenden der Schleife erreicht ist. #!/usr/bin/awk -f BEGINNEN { ich = 2; Tun { print i, "hoch zwei Potenz ist ", i*i; ich = ich + 1 } während (i < 10) Ausfahrt; } for-Schleife Es gibt zwei Arten von For-Schleifen in awk. Eine For-Schleife initialisiert eine Variable, prüft einen Testausdruck, erhöht die Variable und läuft so lange in einer Schleife, bis der Ausdruck als „true“ ausgewertet wird. #!/bin/awk -f BEGINNEN { für (i=1; i <= 10; i++) { print i, "hoch zwei Potenz ist ", i*i; } Ausfahrt; } Eine weitere For-Schleife setzt eine Array-Variable mit aufeinanderfolgenden Indizes und führt für jeden Index einen Satz von Befehlen aus. Mit anderen Worten: Es wird ein Array verwendet, um die Ergebnisse jeder Befehlsausführung zu „sammeln“. Dieses Beispiel implementiert eine vereinfachte Version des Unix-Befehls uniq. Indem Sie dem Array a eine Reihe von Zeichenfolgen als Schlüssel hinzufügen und den Schlüsselwert erhöhen, wenn der gleiche Schlüssel erneut auftritt, können Sie herausfinden, wie oft eine Zeichenfolge vorkommt (genau wie mit der Option --count von uniq). Wenn Sie alle Schlüssel des Arrays drucken, erhalten Sie alle Vorkommen der Zeichenfolge. Nehmen Sie als Beispiel die Demodatei colors.txt (die Datei im vorherigen Artikel):
Hier ist eine einfache awk-Version von uniq -c: #!/usr/bin/awk -f NR != 1 { a[$2]++ } ENDE { für (geben Sie a ein) { drucke a[Schlüssel] " " Schlüssel } } Die dritte Spalte der Beispieldatendatei ist eine Zählung der in der ersten Spalte aufgeführten Einträge. Sie können ein Array und eine For-Schleife verwenden, um die Einträge in der dritten Spalte nach Farbe zu zählen. #!/usr/bin/awk -f BEGINNEN { FS=" "; OFS="\t"; drucken("Farbe\tSumme"); } NR != 1 { ein[$2]+=$3; } ENDE { für (b in a) { drucke b, a[b] } } Sie sehen, dass wir vor der Verarbeitung der Datei auch in der BEFORE-Funktion (die nur einmal ausgeführt wird) eine Spaltenüberschrift drucken müssen. Zyklus Schleifen sind ein wichtiger Bestandteil jeder Programmiersprache und awk ist keine Ausnahme. Mithilfe von Schleifen können Sie steuern, wie das awk-Skript ausgeführt wird, welche Informationen es zählt und wie es Ihre Daten verarbeitet. Wir werden die Anweisungen „switch“, „continue“ und „next“ in unserem nächsten Artikel besprechen. ps: Einfache Verwendung der awk-for-Schleife Text: [root@VM_0_84_centos ~]# cat sshd.txt 1 2 3 4 5 6 7 8 9 Schleife, um den obigen Text auszudrucken Festes Format der For-Schleife i=1 setzt die Anfangsvariable von i i<=NF i-Variable ist kleiner oder gleich dem Wert der NF-Variable (Anzahl der Felder pro Zeile) i++ bedeutet, dass i um +1 erhöht wird, [root@VM_0_84_centos ~]# cat sshd.txt |awk '{für(i=1;i<=NF;i++){drucken $i}}' 1 2 3 4 5 6 7 8 9 Zusammenfassen Das Obige ist meine Einführung in die Verwendung von Schleifen in awk. Ich hoffe, es wird Ihnen hilfreich sein. Wenn Sie Fragen haben, hinterlassen Sie mir bitte eine Nachricht und ich werde Ihnen rechtzeitig antworten. Ich möchte auch allen für ihre Unterstützung der Website 123WORDPRESS.COM danken! Das könnte Sie auch interessieren:
|
<<: Der gesamte Prozessbericht der Vue-Exportfunktion für Excel
>>: Das neueste grafische Tutorial zur Installation von MySQL 8.0.16 Winx64 unter Win10
Inhaltsverzeichnis 1. Szenariobeschreibung 2. Lös...
Mithilfe von HTML-Formularen können verschiedene ...
Das Setup wird zum Schreiben kombinierter APIs ve...
1. Brigde——Bridge: VMnet0 wird standardmäßig verw...
Was ist ORM? ORM steht für Object Relational Mapp...
Inhaltsverzeichnis 1. Vom Vater zum Sohn 2. Vom S...
Vorwort Zabbix ist eine der gängigsten Open-Sourc...
Inhaltsverzeichnis Überblick Indexdatenstruktur B...
Canvas ist ein neues Tag in HTML5. Sie können js ...
Rendern Wenn Sie den im Bild unten gezeigten Effe...
Die Riddle-Sicherheitslücke, die auf die MySQL-Ve...
Mir war langweilig und plötzlich fiel mir die Impl...
1. Aufbau einer Einzelmaschinenumgebung# 1.1 Heru...
Tab-Umschalten ist auch eine gängige Technologie ...
Detaillierte Einführung in den MySql-Index und ko...