In diesem Artikel erläutern wir die grundlegende Verwendung des awk. Wir haben die Beispiele aus diesem Artikel zu einem Debian 10 Buster -System durchgeführt, können jedoch leicht auf den meisten Linux -Distributionen repliziert werden.
Die Beispieldatei, die wir verwenden werden
Die Beispieldatei mit Zeichenfolgen, die wir verwenden werden, um die Verwendung des awk -Befehls zu demonstrieren, lautet wie folgt:
Dies ist, was jede Spalte der Beispieldatei angibt:
Beispiel 1: Verwenden Sie awk, um alle Zeilen einer Datei zu drucken
Das Drucken jeder Zeile einer bestimmten Datei ist das Standardverhalten des awk -Befehls. In der folgenden Syntax des awk -Befehls geben wir kein Muster an, das awk drucken soll. Daher soll der Befehl die Aktion „Drucken“ auf alle Zeilen der Datei anwenden.
Syntax:
$ awk 'print' Dateiname.txt
Beispiel:
In diesem Beispiel sage ich den Befehl awk, den Inhalt meiner Beispieldatei für Zeile für Zeile zu drucken.
$ awk 'print' sample_file.txt
Beispiel 2: Verwenden Sie awk, um nur die Zeilen zu drucken, die einem bestimmten Muster übereinstimmen
Mit awk können Sie ein Muster angeben, und der Befehl druckt nur die Zeilen, die mit diesem Muster übereinstimmen.
Syntax:
$ awk '/ muster_to_be_matched/ print' Dateiname.txt
Beispiel:
Wenn ich aus der Beispieldatei nur die Zeilen (n) drucken möchte, die die Variable 'B' enthalten, kann ich den folgenden Befehl verwenden:
$ awk '/ b/ print' sample_file.txt
Um das Beispiel sinnvoller zu gestalten, lassen Sie mich nur die Informationen über Mitarbeiter, die Professor sind.
$ awk '/ professor/ print' sample_file.txt
Der Befehl druckt nur die Zeilen/Einträge, die den Zeichenfolge „Professor“ enthalten. Daher haben wir mehr wertvolle Informationen aus den Daten abgeleitet.
Beispiel 3. Verwenden Sie awk, um die Datei so aufzuteilen, dass nur bestimmte Felder/Spalten gedruckt werden
Anstatt die gesamte Datei zu drucken, können Sie AWK dazu bringen, nur bestimmte Spalten der Datei zu drucken. Awk behandelt alle Wörter, die durch den weißen Raum getrennt sind, in einer Zeile als Spaltenaufzeichnung standardmäßig. Es speichert den Datensatz in einer $ n Variablen. Wobei $ 1 das erste Wort darstellt, 2 USD speichert das zweite Wort, $ 3 das vierte und so weiter. $ 0 speichert die gesamte Linie, damit die WHO -Zeile gedruckt wird, wie in Beispiel 1 erläutert.
Syntax:
$ awk 'print $ n,… .' Dateinamen.txt
Beispiel:
Der folgende Befehl druckt nur die erste Spalte (Name) und die zweite Spalte (Betreff) meiner Beispieldatei:
$ awk 'print $ 1, $ 2' sample_file.txt
Beispiel 4: Verwenden Sie awk, um die Anzahl der Zeilen zu zählen und zu drucken, in denen ein Muster übereinstimmt
Sie können awk angeben, die Anzahl der Zeilen zu zählen, in denen ein bestimmtes Muster übereinstimmt, und dann diese "Zählung" ausgeben.
Syntax:
$ awk '/muster_to_be_matched/++ cnt end print "count =", cnt'
Dateinamen.txt
Beispiel:
In diesem Beispiel möchte ich die Anzahl der Personen zählen, die das Thema „Englisch“ lehren. Daher werde ich den Befehl awk angeben, dass er dem Muster „Englisch“ übereinstimmt und die Anzahl der Zeilen ausdrucken soll, in denen dieses Muster übereinstimmt.
$ awk '/englisch/++ cnt end print "count =", cnt' sample_file.txt
Die Anzahl hier deutet darauf hin, dass 2 Personen Englisch aus den Beispieldatensätzen unterrichten.
Beispiel 5: Verwenden Sie awk, um nur Zeilen mit mehr als einer bestimmten Anzahl von Zeichen zu drucken
Für diese Aufgabe werden wir die integrierte awk-Funktion "Länge" verwenden, die als "Länge" bezeichnet werden. Diese Funktion gibt die Länge der Eingangszeichenfolge zurück. Wenn wir also möchten, dass awk nur Zeilen mit mehr als oder sogar weniger als die Anzahl der Zeichen druckt, können wir die Längenfunktion auf folgende Weise verwenden:
Für das Drucken von Zeilen mit Zeichen größer als eine Zahl:
$ awk 'Länge ($ 0)> n' Dateiname.txt
Für das Drucken von Zeilen mit Zeichen weniger als eine Zahl:
$ awk 'Länge ($ 0) < n' filename.txt
Wobei n die Anzahl der Zeichen ist, die Sie für eine Zeile angeben möchten.
Beispiel:
Der folgende Befehl druckt nur die Zeilen aus meiner Beispieldatei mit mehr als 30 Jahren:
$ awk 'Länge ($ 0)> 30' Sample_file.txt
Beispiel 6: Verwenden Sie awk, um die Befehlsausgabe in einer anderen Datei zu speichern
Durch die Verwendung des Umleitungsoperators '>' 'können Sie den Befehl awk verwenden, um seine Ausgabe in eine andere Datei zu drucken. So können Sie es verwenden:
$ awk 'criteria_to_print "Dateiname.txt> outputFile.txt
Beispiel:
In diesem Beispiel werde ich den Umleitungsoperator mit meinem awk -Befehl verwenden, um nur die Namen der Mitarbeiter (Spalte 1) in eine neue Datei zu drucken:
$ awk 'print $ 1' sample_file.TXT> Employee_Names.txt
Ich habe über die CAT -Befehle verifiziert, dass die neue Datei nur die Namen der Mitarbeiter enthält.
Beispiel 7: Verwenden Sie awk, um nicht leere Zeilen aus einer Datei zu drucken
AWK hat einige integrierte Befehle, mit denen Sie die Ausgabe filtern können. Zum Beispiel wird der Befehl nF verwendet, um eine Anzahl der Felder innerhalb des aktuellen Eingangsdatensatzes zu halten. Hier werden wir den Befehl nF verwenden, um nur die nicht leeren Zeilen der Datei zu drucken:
$ awk 'nf> 0' sample_file.txt
Offensichtlich können Sie den folgenden Befehl verwenden, um die leeren Zeilen zu drucken:
$ awk 'nf < 0' sample_file.txt
Beispiel 8: Verwenden Sie awk, um die Gesamtzeilen in einer Datei zu zählen
Eine andere integrierte Funktion namens NR hält eine Anzahl der Anzahl der Eingabebatensätze (normalerweise Zeilen) einer bestimmten Datei. Sie können diese Funktion in awk wie folgt verwenden, um die Anzahl der Zeilen in einer Datei zu zählen:
$ awk 'Ende print nr' sample_file.txt
Dies waren die grundlegenden Informationen, die Sie mit dem Aufteilen von Dateien mit dem awk -Befehl beginnen müssen. Sie können die Kombination dieser Beispiele verwenden, um aussagekräftigere Informationen aus Ihrer Stringsdatei über awk zu holen.