In diesem sechsten Teil von Awk-Serie, wir werden uns die Verwendung ansehen nächste
Befehl, der sagt Awk um alle verbleibenden Muster und Ausdrücke zu überspringen, die Sie bereitgestellt haben, sondern lesen Sie stattdessen die nächste Eingabezeile.
Das nächste
Befehl hilft Ihnen, die Ausführung von zeitraubenden Schritten in einer Befehlsausführung zu verhindern.
Um zu verstehen, wie es funktioniert, betrachten wir eine Datei namens food_list.txt das sieht so aus:
Elemente der Lebensmittelliste
Nein Item_Name Preis Menge. 1 Mangos 3,45 $ 5. 2 Äpfel 2,45 $ 25. 3 Ananas 4,45 $ 55. 4 Tomaten 3,45 $ 25. 5 Zwiebeln 1,45 $ 15. 6 Bananen 3,45 $ 30.
Ziehen Sie in Betracht, den folgenden Befehl auszuführen, der Lebensmittel markiert, deren Menge kleiner oder gleich ist 20 mit einem (*)
Zeichen am Ende jeder Zeile:
# awk '$4 <= 20 { printf "%s\t%s\n", $0,"*"; } $4 > 20 { $0 drucken ;} 'food_list.txt Nein Item_Name Preis Menge. 1 Mangos 3,45 $ 5* 2 Äpfel 2,45 $ 25. 3 Ananas 4,45 $ 55. 4 Tomaten 3,45 $ 25 5 Zwiebeln 1,45 $ 15* 6 Bananen 3,45 $ 30.
Der obige Befehl funktioniert tatsächlich wie folgt:
(*)
unterschreiben Sie am Ende mit Ausdruck eins: $4 <= 20
$4 > 20
Aber hier gibt es ein Problem, wenn die erster Ausdruck ausgeführt wird, wird eine Zeile, die wir markieren möchten, gedruckt mit: { printf "%s\t%s\n", $0,"**"; }
und dann im gleichen Schritt die zweiter Ausdruck wird auch überprüft, was zu einem Zeitverschwendungsfaktor wird.
Der zweite Ausdruck muss also nicht ausgeführt werden. $4 > 20
erneut, nachdem Sie bereits markierte Zeilen gedruckt haben, die mit dem ersten Ausdruck gedruckt wurden.
Um dieses Problem zu lösen, müssen Sie die nächste
Befehl wie folgt:
# awk '$4 <= 20 { printf "%s\t%s\n", $0,"*"; nächste; } $4 > 20 { $0 drucken ;} 'food_list.txt Nein Item_Name Preis Menge. 1 Mangos 3,45 $ 5* 2 Äpfel 2,45 $ 25. 3 Ananas 4,45 $ 55. 4 Tomaten 3,45 $ 25 5 Zwiebeln 1,45 $ 15* 6 Bananen 3,45 $ 30.
Nachdem eine einzelne Eingabezeile mit. gedruckt wurde $4 <= 20
{ printf "%s\t%s\n", $0,"*"; nächste; }
, das nächste
Der enthaltene Befehl hilft, den zweiten Ausdruck zu überspringen $4 > 20
{ $0 drucken;}
, so geht die Ausführung zur nächsten Eingabezeile, ohne Zeit damit verschwenden zu müssen, zu prüfen, ob die Menge größer ist als 20.
Das nächste Befehl ist sehr wichtig, effiziente Befehle zu schreiben und bei Bedarf können Sie immer verwenden, um die Ausführung eines Skripts zu beschleunigen. Bereiten Sie sich auf den nächsten Teil der Serie vor, in dem wir uns die Standardeingabe ansehen werden (STDIN) als Eingabe für Awk.
Ich hoffe, Sie finden diese Anleitung hilfreich und können Ihre Gedanken wie immer schriftlich festhalten, indem Sie einen Kommentar im Kommentarbereich unten hinterlassen.