AWK ist eine leistungsstarke datengesteuerte Programmiersprache, die ihren Ursprung in den frühen Tagen von Unix hat. Sie wurde ursprünglich zum Schreiben von „Einzeiler“-Programmen entwickelt, hat sich aber inzwischen zu einer vollwertigen Programmiersprache entwickelt. AWK hat seinen Namen von den Initialen seiner Autoren – Aho, Weinberger und Kernighan. Der awk-Befehl in Linux und anderen Unix-Systemen ruft den Interpreter auf, der AWK-Skripte ausführt. In neueren Systemen existieren mehrere Implementierungen von awk, darunter gawk (GNU awk), mawk (Minimal awk) und nawk (New awk). Sehen Sie sich die folgenden Beispiele an, wenn Sie awk beherrschen möchten.
Verstehen von AWK-Programmen
In awk geschriebene Programme bestehen aus Regeln, die einfach ein Paar von Mustern und Aktionen sind. Die Muster sind innerhalb einer geschweiften Klammer {} gruppiert, und der Aktionsteil wird immer dann ausgelöst, wenn awk Texte findet, die dem Muster entsprechen. Obwohl awk zum Schreiben von Einzeilern entwickelt wurde, können erfahrene Benutzer problemlos komplexe Skripte damit schreiben.
AWK-Programme sind sehr nützlich für die Verarbeitung großer Dateien. Es identifiziert Textfelder mit Sonderzeichen und Trennzeichen. Es bietet auch High-Level-Programmierkonstrukte wie Arrays und Schleifen. Das Schreiben robuster Programme mit einfachem awk ist also sehr gut möglich.
Praktische Beispiele für den awk-Befehl unter Linux
Administratoren verwenden awk normalerweise für die Datenextraktion und Berichterstellung neben anderen Arten von Dateimanipulationen. Im Folgenden haben wir awk ausführlicher besprochen. Befolgen Sie die Befehle sorgfältig und probieren Sie sie in Ihrem Terminal aus, um sie vollständig zu verstehen.
1. Bestimmte Felder aus der Textausgabe drucken
Die am häufigsten verwendeten Linux-Befehle zeigen ihre Ausgabe in verschiedenen Feldern an. Normalerweise verwenden wir den Linux-Cut-Befehl, um ein bestimmtes Feld aus solchen Daten zu extrahieren. Der folgende Befehl zeigt Ihnen jedoch, wie Sie dies mit dem awk-Befehl tun.
$ who | awk '{print $1}'
Dieser Befehl zeigt nur das erste Feld aus der Ausgabe des Befehls who an. Sie erhalten also einfach die Benutzernamen aller derzeit angemeldeten Benutzer. Hier, $1 stellt das erste Feld dar. Sie müssen $N verwenden wenn Sie das N-te Feld extrahieren möchten.
2. Mehrere Felder aus der Textausgabe drucken
- -Mit dem awk-Interpreter können wir beliebig viele Felder drucken. Die folgenden Beispiele zeigen uns, wie wir die ersten beiden Felder aus der Ausgabe des who-Befehls extrahieren.
$ who | awk '{print $1, $2}'
Sie können auch die Reihenfolge der Ausgabefelder steuern. Im folgenden Beispiel wird zuerst die zweite Spalte angezeigt, die vom who-Befehl erzeugt wird, und dann die erste Spalte im zweiten Feld.
$ who | awk '{print $2, $1}'
Lassen Sie einfach die Feldparameter weg ($N ), um die gesamten Daten anzuzeigen.
3. Verwenden Sie BEGIN-Anweisungen
Die BEGIN-Anweisung ermöglicht es Benutzern, einige bekannte Informationen in der Ausgabe zu drucken. Es wird normalerweise zum Formatieren der von awk generierten Ausgabedaten verwendet. Die Syntax für diese Anweisung ist unten dargestellt.
BEGIN { Actions} {ACTION}
Die Aktionen, die den BEGIN-Abschnitt bilden, werden immer ausgelöst. Dann liest awk die verbleibenden Zeilen eine nach der anderen und sieht, ob etwas getan werden muss.
$ who | awk 'BEGIN {print "User\tFrom"} {print $1, $2}'
Der obige Befehl beschriftet die beiden Ausgabefelder, die aus der Ausgabe des who-Befehls extrahiert wurden.
4. Verwenden Sie END-Anweisungen
Sie können auch die END-Anweisung verwenden, um sicherzustellen, dass bestimmte Aktionen immer am Ende Ihrer Operation ausgeführt werden. Platzieren Sie einfach den END-Abschnitt nach dem Hauptsatz von Aktionen.
$ who | awk 'BEGIN {print "User\tFrom"} {print $1, $2} END {print "--COMPLETED--"}'
Der obige Befehl hängt die angegebene Zeichenfolge am Ende der Ausgabe an.
5. Suche nach Mustern
Ein großer Teil der Arbeit von awk umfasst Mustererkennung und Regex. Wie wir bereits besprochen haben, sucht awk in jeder Eingabezeile nach Mustern und führt die Aktion nur aus, wenn eine Übereinstimmung ausgelöst wird. Unsere bisherigen Regeln bestanden nur aus Aktionen. Unten haben wir die Grundlagen des Musterabgleichs mit dem awk-Befehl in Linux veranschaulicht.
$ who | awk '/mary/ {print}'
Dieser Befehl wird sehen, ob der Benutzer Mary derzeit angemeldet ist oder nicht. Es wird die gesamte Zeile ausgegeben, wenn eine Übereinstimmung gefunden wird.
6. Informationen aus Dateien extrahieren
Der Befehl awk funktioniert sehr gut mit Dateien und kann für komplexe Dateiverarbeitungsaufgaben verwendet werden. Der folgende Befehl veranschaulicht, wie awk mit Dateien umgeht.
$ awk '/hello/ {print}' /usr/share/dict/american-english
Dieser Befehl sucht nach dem Muster „hello“ in der amerikanisch-englischen Wörterbuchdatei. Es ist auf den meisten Linux-basierten Distributionen verfügbar. Daher können Sie awk-Programme einfach mit dieser Datei ausprobieren.
7. AWK-Skript aus Quelldatei lesen
Obwohl das Schreiben von Einzeiler-Programmen nützlich ist, können Sie auch große Programme vollständig mit awk schreiben. Sie sollten sie speichern und Ihr Programm mit der Quelldatei ausführen.
$ awk -f script-file $ awk --file script-file
Das -f oder –Datei Option ermöglicht es uns, die Programmdatei anzugeben. Sie müssen jedoch keine Anführungszeichen (‘ ‘) innerhalb der Skriptdatei verwenden, da die Linux-Shell den Programmcode nicht auf diese Weise interpretiert.
8. Eingabefeld-Trennzeichen setzen
Ein Feldtrennzeichen ist ein Trennzeichen, das den Eingabedatensatz teilt. Mit dem -F können wir einfach Feldtrenner für awk angeben oder –field-separator Möglichkeit. Sehen Sie sich die folgenden Befehle an, um zu sehen, wie das funktioniert.
$ echo "This-is-a-simple-example" | awk -F - ' {print $1} ' $ echo "This-is-a-simple-example" | awk --field-separator - ' {print $1} '
Es funktioniert genauso, wenn Sie Skriptdateien anstelle des einzeiligen awk-Befehls unter Linux verwenden.
9. Informationen basierend auf dem Zustand drucken
Wir haben den Linux-Cut-Befehl in einem früheren Handbuch besprochen. Jetzt zeigen wir Ihnen, wie Sie Informationen mit awk nur dann extrahieren, wenn bestimmte Kriterien erfüllt sind. Wir werden dieselbe Testdatei verwenden, die wir in diesem Handbuch verwendet haben. Gehen Sie also dorthin und erstellen Sie eine Kopie der test.txt Datei.
$ awk '$4 > 50' test.txt
Dieser Befehl druckt alle Nationen aus der Datei test.txt, die mehr als 50 Millionen Einwohner hat.
10. Informationen durch Vergleich regulärer Ausdrücke drucken
Der folgende awk-Befehl prüft, ob das dritte Feld einer beliebigen Zeile das Muster „Lira“ enthält und gibt bei einer Übereinstimmung die gesamte Zeile aus. Wir verwenden wieder die Datei test.txt, die zur Veranschaulichung des Linux-Cut-Befehls verwendet wurde. Stellen Sie also sicher, dass Sie diese Datei haben, bevor Sie fortfahren.
$ awk '$3 ~ /Lira/' test.txt
Sie können wählen, ob Sie nur einen bestimmten Teil eines Spiels drucken möchten, wenn Sie möchten.
11. Zählen Sie die Gesamtzahl der Zeilen in der Eingabe
Der awk-Befehl hat viele spezielle Variablen, die es uns ermöglichen, viele fortgeschrittene Dinge einfach zu tun. Eine solche Variable ist NR, die die aktuelle Zeilennummer enthält.
$ awk 'END {print NR} ' test.txt
Dieser Befehl gibt aus, wie viele Zeilen in unserer Datei test.txt vorhanden sind. Zuerst iteriert es über jede Zeile, und sobald es END erreicht hat, gibt es den Wert von NR aus – der in diesem Fall die Gesamtzahl der Zeilen enthält.
12. Ausgabefeld-Trennzeichen setzen
Weiter oben haben wir gezeigt, wie man Eingabefeld-Trennzeichen mit -F auswählt oder –field-separator Möglichkeit. Mit dem awk-Befehl können wir auch das Ausgabefeld-Trennzeichen angeben. Das folgende Beispiel demonstriert dies anhand eines praktischen Beispiels.
$ date | awk 'OFS="-" {print$2,$3,$6}'
Dieser Befehl gibt das aktuelle Datum im Format TT-MM-JJ aus. Führen Sie das date-Programm ohne awk aus, um zu sehen, wie die Standardausgabe aussieht.
13. Verwendung des If-Konstrukts
Wie andere gängige Programmiersprachen stellt auch awk den Benutzern die if-else-Konstrukte zur Verfügung. Die if-Anweisung in awk hat die folgende Syntax.
if (expression) { first_action second_action }
Die entsprechenden Aktionen werden nur ausgeführt, wenn der Bedingungsausdruck wahr ist. Das folgende Beispiel demonstriert dies anhand unserer Referenzdatei test.txt .
$ awk '{ if ($4>100) print }' test.txt
Sie müssen den Einzug nicht strikt einhalten.
14. If-Else-Konstrukte verwenden
Mit der folgenden Syntax können Sie nützliche if-else-Leitern konstruieren. Sie sind nützlich, wenn komplexe awk-Skripte entwickelt werden, die mit dynamischen Daten umgehen.
if (expression) first_action else second_action
$ awk '{ if ($4>100) print; else print }' test.txt
Der obige Befehl druckt die gesamte Referenzdatei, da das vierte Feld für jede Zeile nicht größer als 100 ist.
15. Legen Sie die Feldbreite fest
Manchmal sind die Eingabedaten ziemlich chaotisch, und Benutzer finden es möglicherweise schwierig, sie in ihren Berichten zu visualisieren. Glücklicherweise stellt awk eine leistungsstarke eingebaute Variable namens FIELDWIDTHS zur Verfügung, mit der wir eine durch Leerzeichen getrennte Liste von Breiten definieren können.
$ echo 5675784464657 | awk 'BEGIN {FIELDWIDTHS= "3 4 5"} {print $1, $2, $3}'
Es ist sehr nützlich, wenn verstreute Daten geparst werden, da wir die Breite des Ausgabefelds genau so steuern können, wie wir es wollen.
16. Legen Sie das Datensatztrennzeichen fest
RS oder Record Separator ist eine weitere eingebaute Variable, mit der wir angeben können, wie Datensätze getrennt werden. Lassen Sie uns zuerst eine Datei erstellen, die die Funktionsweise dieser awk-Variablen demonstriert.
$ cat new.txt Melinda James 23 New Hampshire (222) 466-1234 Daniel James 99 Phonenix Road (322) 677-3412
$ awk 'BEGIN{FS="\n"; RS=""} {print $1,$3}' new.txt
Dieser Befehl analysiert das Dokument und gibt den Namen und die Adresse der beiden Personen aus.
17. Umgebungsvariablen drucken
Der awk-Befehl in Linux ermöglicht es uns, Umgebungsvariablen einfach mit der Variablen ENVIRON zu drucken. Der folgende Befehl demonstriert, wie dies zum Ausdrucken des Inhalts der PATH-Variablen verwendet wird.
$ awk 'BEGIN{ print ENVIRON["PATH"] }'
Sie können den Inhalt jeder Umgebungsvariablen drucken, indem Sie das Argument der ENVIRON-Variablen ersetzen. Der folgende Befehl gibt den Wert der Umgebungsvariable HOME.
aus$ awk 'BEGIN{ print ENVIRON["HOME"] }'
18. Einige Felder aus der Ausgabe auslassen
Mit dem Befehl awk können wir bestimmte Zeilen aus unserer Ausgabe weglassen. Der folgende Befehl demonstriert dies anhand unserer Referenzdatei test.txt .
$ awk -F":" '{$2=""; print}' test.txt
Dieser Befehl lässt die zweite Spalte unserer Datei weg, die den Namen der Hauptstadt für jedes Land enthält. Sie können auch mehr als ein Feld auslassen, wie im nächsten Befehl gezeigt.
$ awk -F":" '{$2="";$3="";print}' test.txt
19. Leerzeilen entfernen
Manchmal können Daten zu viele Leerzeilen enthalten. Sie können den awk-Befehl verwenden, um leere Zeilen ziemlich einfach zu entfernen. Sehen Sie sich den nächsten Befehl an, um zu sehen, wie das in der Praxis funktioniert.
$ awk '/^[ \t]*$/{next}{print}' new.txt
Wir haben alle leeren Zeilen aus der Datei new.txt mit einem einfachen regulären Ausdruck und einem eingebauten awk namens next.
entfernt20. Nachgestellte Leerzeichen entfernen
Die Ausgabe vieler Linux-Befehle enthält abschließende Leerzeichen. Wir können den Befehl awk in Linux verwenden, um solche Leerzeichen wie Leerzeichen und Tabulatoren zu entfernen. Sehen Sie sich den folgenden Befehl an, um zu sehen, wie Sie solche Probleme mit awk lösen können.
$ awk '{sub(/[ \t]*$/, "");print}' new.txt test.txt
Fügen Sie unseren Referenzdateien einige abschließende Leerzeichen hinzu und überprüfen Sie, ob awk sie erfolgreich entfernt hat oder nicht. Es hat dies erfolgreich in meiner Maschine gemacht.
21. Überprüfen Sie die Anzahl der Felder in jeder Zeile
Wir können leicht überprüfen, wie viele Felder in einer Zeile vorhanden sind, indem wir einen einfachen awk-Einzeiler verwenden. Es gibt viele Möglichkeiten, dies zu tun, aber wir werden einige der eingebauten Variablen von awk für diese Aufgabe verwenden. Die NR-Variable gibt uns die Zeilennummer und die NF-Variable die Anzahl der Felder.
$ awk '{print NR,"-->",NF}' test.txt
Jetzt können wir in unserer test.txt bestätigen, wie viele Felder pro Zeile vorhanden sind dokumentieren. Da jede Zeile dieser Datei 5 Felder enthält, können wir sicher sein, dass der Befehl wie erwartet funktioniert.
22. Überprüfen Sie den aktuellen Dateinamen
Die awk-Variable FILENAME wird zur Überprüfung des aktuellen Eingabedateinamens verwendet. Wie das funktioniert, zeigen wir an einem einfachen Beispiel. Es kann jedoch in Situationen nützlich sein, in denen der Dateiname nicht explizit bekannt ist oder es mehr als eine Eingabedatei gibt.
$ awk '{print FILENAME}' test.txt $ awk '{print FILENAME}' test.txt new.txt
Die obigen Befehle geben den Dateinamen aus, an dem awk arbeitet, jedes Mal, wenn es eine neue Zeile der Eingabedateien verarbeitet.
23. Anzahl der verarbeiteten Datensätze überprüfen
Das folgende Beispiel zeigt, wie wir die Anzahl der vom awk-Befehl verarbeiteten Datensätze überprüfen können. Da eine große Anzahl von Linux-Systemadministratoren awk zum Generieren von Berichten verwenden, ist es für sie sehr nützlich.
$ awk '{print "Processing Record - ",NR;} END {print "\nTotal Records Processed:", NR;}' test.txt
Ich verwende dieses awk-Snippet oft, um einen klaren Überblick über meine Aktionen zu haben. Sie können es leicht anpassen, um neue Ideen oder Aktionen aufzunehmen.
24. Gesamtzahl der Zeichen in einem Datensatz drucken
Die awk-Sprache bietet eine praktische Funktion namens length(), die uns sagt, wie viele Zeichen in einem Datensatz vorhanden sind. Es ist in einer Reihe von Szenarien sehr nützlich. Werfen Sie einen kurzen Blick auf das folgende Beispiel, um zu sehen, wie das funktioniert.
$ echo "A random text string..." | awk '{ print length($0); }'
$ awk '{ print length($0); }' /etc/passwd
Der obige Befehl gibt die Gesamtzahl der Zeichen aus, die in jeder Zeile der Eingabezeichenfolge oder -datei vorhanden sind.
25. Alle Zeilen drucken, die länger als eine angegebene Länge sind
Wir können dem obigen Befehl einige Bedingungen hinzufügen und dafür sorgen, dass nur die Zeilen gedruckt werden, die größer als eine vordefinierte Länge sind. Es ist nützlich, wenn Sie bereits eine Vorstellung von der Länge eines bestimmten Datensatzes haben.
$ echo "A random text string..." | awk 'length($0) > 10'
$ awk '{ length($0) > 5; }' /etc/passwd
Sie können weitere Optionen und/oder Argumente hinzufügen, um den Befehl basierend auf Ihren Anforderungen zu optimieren.
26. Drucken Sie die Anzahl der Zeilen, Zeichen und Wörter
Der folgende awk-Befehl in Linux gibt die Anzahl der Zeilen, Zeichen und Wörter in einer bestimmten Eingabe aus. Es verwendet die NR-Variable sowie einige grundlegende Arithmetik, um diese Operation durchzuführen.
$ echo "This is a input line..." | awk '{ w += NF; c += length + 1 } END { print NR, w, c }'
Es zeigt, dass die Eingabezeichenfolge 1 Zeile, 5 Wörter und genau 24 Zeichen enthält.
27. Berechnen Sie die Häufigkeit von Wörtern
Wir können assoziative Arrays und die for-Schleife in awk kombinieren, um die Worthäufigkeit eines Dokuments zu berechnen. Der folgende Befehl mag ein wenig komplex erscheinen, ist aber ziemlich einfach, sobald Sie die grundlegenden Konstrukte klar verstanden haben.
$ awk 'BEGIN {FS="[^a-zA-Z]+" } { for (i=1; i<=NF; i++) words[tolower($i)]++ } END { for (i in words) print i, words[i] }' test.txt
Wenn Sie Probleme mit dem Einzeiler-Snippet haben, kopieren Sie den folgenden Code in eine neue Datei und führen Sie ihn unter Verwendung der Quelle aus.
$ cat > frequency.awk BEGIN { FS="[^a-zA-Z]+" } { for (i=1; i<=NF; i++) words[tolower($i)]++ } END { for (i in words) print i, words[i] }
Führen Sie es dann mit -f aus Option.
$ awk -f frequency.awk test.txt
28. Dateien mit AWK umbenennen
Mit dem awk-Befehl können alle Dateien umbenannt werden, die bestimmte Kriterien erfüllen. Der folgende Befehl veranschaulicht, wie awk verwendet wird, um alle .MP3-Dateien in einem Verzeichnis in .mp3-Dateien umzubenennen.
$ touch {a,b,c,d,e}.MP3 $ ls *.MP3 | awk '{ printf("mv \"%s\" \"%s\"\n", $0, tolower($0)) }' $ ls *.MP3 | awk '{ printf("mv \"%s\" \"%s\"\n", $0, tolower($0)) }' | sh
Zuerst haben wir einige Demodateien mit der Erweiterung .MP3 erstellt. Der zweite Befehl zeigt dem Benutzer, was passiert, wenn die Umbenennung erfolgreich ist. Schließlich führt der letzte Befehl die Umbenennungsoperation mit dem mv-Befehl in Linux durch.
29. Drucken Sie die Quadratwurzel einer Zahl
AWK bietet mehrere eingebaute Funktionen zum Bearbeiten von Ziffern. Eine davon ist die Funktion sqrt(). Es ist eine C-ähnliche Funktion, die die Quadratwurzel einer gegebenen Zahl zurückgibt. Werfen Sie einen kurzen Blick auf das nächste Beispiel, um zu sehen, wie das im Allgemeinen funktioniert.
$ awk 'BEGIN{ print sqrt(36); print sqrt(0); print sqrt(-16) }'
Da Sie die Quadratwurzel einer negativen Zahl nicht bestimmen können, zeigt die Ausgabe ein spezielles Schlüsselwort namens „nan“ anstelle von sqrt(-12).
30. Drucken Sie den Logarithmus einer Zahl
Die awk-Funktion log() liefert den natürlichen Logarithmus einer Zahl. Es funktioniert jedoch nur mit positiven Zahlen, achten Sie also darauf, die Eingaben der Benutzer zu validieren. Anderenfalls könnte jemand Ihre awk-Programme beschädigen und unbefugten Zugriff auf Systemressourcen erlangen.
$ awk 'BEGIN{ print log(36); print log(0); print log(-16) }'
Sie sollten den Logarithmus von 36 sehen und sicherstellen, dass der Logarithmus von 0 unendlich ist und der Logarithmus eines negativen Werts „Not a Number“ oder nan ist.
31. Drucken Sie das Exponential einer Zahl
Das Exponential os einer Zahl n liefert den Wert von e^n. Es wird normalerweise in awk-Skripten verwendet, die sich mit großen Ziffern oder komplexer arithmetischer Logik befassen. Wir können das Exponential einer Zahl mit der eingebauten awk-Funktion exp() erzeugen.
$ awk 'BEGIN{ print exp(30); print log(0); print exp(-16) }'
Allerdings kann awk für extrem große Zahlen keine Exponentialrechnung berechnen. Sie sollten solche Berechnungen mit Low-Level-Programmiersprachen wie C durchführen und den Wert in Ihre awk-Skripte einspeisen.
32. Generieren Sie Zufallszahlen mit AWK
Wir können den Befehl awk in Linux verwenden, um Zufallszahlen zu generieren. Diese Zahlen liegen im Bereich von 0 bis 1, aber niemals 0 oder 1. Sie können einen festen Wert mit der resultierenden Zahl multiplizieren, um einen größeren Zufallswert zu erhalten.
$ awk 'BEGIN{ print rand(); print rand()*99 }'
Die Funktion rand() benötigt kein Argument. Außerdem sind die von dieser Funktion generierten Zahlen nicht exakt zufällig, sondern eher pseudozufällig. Darüber hinaus ist es ziemlich einfach, diese Zahlen von Lauf zu Lauf vorherzusagen. Daher sollten Sie sich bei sensiblen Berechnungen nicht darauf verlassen.
33. Compiler-Warnungen rot einfärben
Moderne Linux-Compiler geben Warnungen aus, wenn Ihr Code die Sprachstandards nicht einhält oder Fehler aufweist, die die Programmausführung nicht anhalten. Der folgende awk-Befehl druckt die von einem Compiler generierten Warnzeilen in Rot.
$ gcc -Wall main.c |& awk '/: warning:/{print "\x1B[01;31m" $0 "\x1B[m";next;}{print}'
Dieser Befehl ist nützlich, wenn Sie speziell auf Compiler-Warnungen hinweisen möchten. Sie können diesen Befehl mit jedem anderen Compiler als gcc verwenden, stellen Sie nur sicher, dass Sie das Muster /:warning:/ ändern, um diesen bestimmten Compiler widerzuspiegeln.
34. Drucken Sie die UUID-Informationen des Dateisystems
Die UUID oder Universally Unique Identifier ist eine Nummer, die verwendet werden kann, um Ressourcen wie das Linux-Dateisystem zu identifizieren. Wir können einfach die UUID-Informationen unseres Dateisystems drucken, indem wir den folgenden Linux-awk-Befehl verwenden.
$ awk '/UUID/ {print $0}' /etc/fstab
Dieser Befehl sucht nach der Text-UUID in /etc/fstab Datei mit awk-Mustern. Es gibt einen Kommentar aus der Datei zurück, an dem wir nicht interessiert sind. Der folgende Befehl stellt sicher, dass wir nur die Zeilen erhalten, die mit UUID.
beginnen$ awk '/^UUID/ {print $1}' /etc/fstab
Es beschränkt die Ausgabe auf das erste Feld. Wir erhalten also nur die UUID-Nummern.
35. Drucken Sie die Linux-Kernel-Image-Version
Verschiedene Linux-Kernel-Images werden von verschiedenen Linux-Distributionen verwendet. Wir können leicht das genaue Kernel-Image drucken, auf dem unser System basiert, indem wir awk verwenden. Sehen Sie sich den folgenden Befehl an, um zu sehen, wie das im Allgemeinen funktioniert.
$ uname -a | awk '{print $3}'
Wir haben zuerst den uname-Befehl mit dem -a ausgegeben Option und leitete diese Daten dann an awk weiter. Dann haben wir die Versionsinformationen des Kernel-Images mit awk extrahiert.
36. Zeilennummern vor Zeilen hinzufügen
Benutzer können häufig auf Textdateien stoßen, die keine Zeilennummern enthalten. Glücklicherweise können Sie einer Datei mit dem awk-Befehl in Linux ganz einfach Zeilennummern hinzufügen. Sehen Sie sich das folgende Beispiel genau an, um zu sehen, wie das im wirklichen Leben funktioniert.
$ awk '{ print FNR ". " $0 ;next}{print}' test.txt
Der obige Befehl fügt vor jeder Zeile in unserer Referenzdatei test.txt eine Zeilennummer hinzu. Es verwendet die integrierte awk-Variable FNR, um dies zu beheben.
37. Drucken einer Datei nach dem Sortieren des Inhalts
Wir können awk auch verwenden, um eine sortierte Liste aller Zeilen zu drucken. Die folgenden Befehle geben die Namen aller Länder in unserer test.txt in sortierter Reihenfolge aus.
$ awk -F ':' '{ print $1 }' test.txt | sort
Der nächste Befehl gibt die Anmeldenamen aller Benutzer aus /etc/passwd aus Datei.
$ awk -F ':' '{ print $1 }' /etc/passwd | sort
Sie können die Sortierreihenfolge einfach ändern, indem Sie den sort-Befehl ändern.
38. Drucken Sie die Handbuchseite
Die Handbuchseite enthält neben allen verfügbaren Optionen detaillierte Informationen zum Befehl awk. Es ist extrem wichtig für Leute, die den awk-Befehl gründlich beherrschen wollen.
$ man awk
Wenn Sie komplexe awk-Funktionen lernen möchten, ist dies eine große Hilfe für Sie. Konsultieren Sie diese Dokumentation, wenn Sie mit einem Problem nicht weiterkommen.
39. Drucken Sie die Hilfeseite
Die Hilfeseite enthält zusammengefasste Informationen aller möglichen Kommandozeilenargumente. Sie können die Hilfeanleitung für awk mit einem der folgenden Befehle aufrufen.
$ awk -h $ awk --help
Konsultieren Sie diese Seite, wenn Sie einen schnellen Überblick über alle verfügbaren Optionen für awk wünschen.
40. Informationen zur Druckversion
Die Versionsinformationen liefern uns Informationen über den Build eines Programms. Die Versionsseite für awk enthält Informationen wie das Urheberrecht, Kompilierungswerkzeuge und so weiter. Sie können diese Informationen mit einem der folgenden awk-Befehle anzeigen.
$ awk -V $ awk --version
Abschlussgedanken
Der awk-Befehl in Linux ermöglicht uns, alle möglichen Dinge zu tun, einschließlich Dateiverarbeitung und Systemwartung. Es bietet eine Vielzahl von Operationen, um die täglichen Computeraufgaben ganz einfach zu erledigen. Unsere Redakteure haben diesen Leitfaden mit 40 hilfreichen awk-Befehlen zusammengestellt, die zur Textbearbeitung oder -verwaltung verwendet werden können. Da AWK selbst eine vollwertige Programmiersprache ist, gibt es mehrere Möglichkeiten, dieselbe Aufgabe zu erledigen. Wundern Sie sich also nicht, warum wir bestimmte Dinge anders machen. Sie können jederzeit Ihre eigenen Rezepte basierend auf Ihren Fähigkeiten und Ihrer Erfahrung kuratieren. Hinterlassen Sie uns Ihre Meinung und lassen Sie uns wissen, wenn Sie Fragen haben.