Awk

So teilen Sie eine String-Datei mit Awk

So teilen Sie eine String-Datei mit Awk
Der Linux-Befehl awk (abgekürzt nach den Namen der Entwickler; Aho, Weinberger und Kernighan) ist eine großartige Möglichkeit, eine Datei mit Strings zu verarbeiten und zu analysieren. Damit die Dateien aussagekräftiger sind, müssen sie in Form von Zeilen und Spalten organisiert werden. Dann können Sie awk für diese Dateien verwenden, um:

In diesem Artikel erklären wir die grundlegende Verwendung des Befehls awk und wie er verwendet werden kann, um eine Datei mit Strings aufzuteilen. Wir haben die Beispiele aus diesem Artikel auf einem Debian 10 Buster-System durchgeführt, aber sie können auf den meisten Linux-Distributionen leicht repliziert werden.

Die Beispieldatei, die wir verwenden werden

Die Beispieldatei mit Strings, die wir verwenden werden, um die Verwendung des awk-Befehls zu demonstrieren, lautet wie folgt:

Dies ist, was jede Spalte der Beispieldatei anzeigt:

Beispiel 1: Verwenden Sie Awk, um alle Zeilen einer Datei zu drucken

Das Drucken jeder einzelnen Zeile einer angegebenen Datei ist das Standardverhalten des Befehls awk. 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 dem Befehl awk, dass er den Inhalt meiner Beispieldatei zeilenweise ausgeben soll.

$ awk 'print' Beispieldatei.TXT

Beispiel 2:                                                                              "

Mit awk können Sie ein Muster angeben und der Befehl druckt nur die Zeilen, die diesem Muster entsprechen.

Syntax:

$ awk '/pattern_to_be_matched/ print' Dateiname.TXT

Beispiel:

Wenn ich aus der Beispieldatei nur die Zeile(n) drucken möchte, die die Variable 'B' enthalten, kann ich den folgenden Befehl verwenden:

$ awk '/B/ print' Beispieldatei.TXT

Um das Beispiel aussagekräftiger zu machen, lassen Sie mich nur die Informationen über Mitarbeiter drucken, die "Professoren" sind.

$ awk '/professor/ print' Beispieldatei.TXT

Der Befehl gibt nur die Zeilen/Einträge aus, die die Zeichenfolge „Professor“ enthalten, sodass wir wertvollere Informationen aus den Daten erhalten.

Beispiel 3. Verwenden Sie awk, um die Datei aufzuteilen, sodass nur bestimmte Felder/Spalten gedruckt werden

Anstatt die gesamte Datei zu drucken, können Sie awk so einstellen, dass nur bestimmte Spalten der Datei gedruckt werden. Awk behandelt alle durch Leerzeichen getrennten Wörter in einer Zeile standardmäßig als Spaltendatensatz. Es speichert den Datensatz in einer $N-Variablen. Dabei steht $1 für das erste Wort, $2 speichert das zweite Wort, $3 das vierte und so weiter. $0 speichert die gesamte Zeile, sodass die Who-Zeile gedruckt wird, wie in Beispiel 1 erklärt.

Syntax:

$ awk 'print $N,… .' Dateiname.TXT

Beispiel:

Der folgende Befehl druckt nur die erste Spalte (Name) und die zweite Spalte (Betreff) meiner Beispieldatei:

$ awk 'print $1, $2' Beispieldatei.TXT

Beispiel 4: Verwenden Sie Awk, um die Anzahl der Zeilen zu zählen und zu drucken, in denen ein Muster übereinstimmt match

Sie können awk anweisen, die Anzahl der Zeilen zu zählen, in denen ein bestimmtes Muster übereinstimmt, und dann diesen 'count' ausgeben.

Syntax:

$ awk '/pattern_to_be_matched/++cnt END print "Count =", cnt'
Dateiname.TXT

Beispiel:

In diesem Beispiel möchte ich zählen, wie viele Personen das Fach „Englisch“ unterrichten. Daher werde ich dem awk-Befehl sagen, dass er das Muster „englisch“ abgleichen soll und die Anzahl der Zeilen ausgeben, in denen dieses Muster übereinstimmt.

$ awk '/english/++cnt END print "Count = ", cnt' sample_file.TXT

Die Zählung hier deutet darauf hin, dass 2 Personen Englisch aus den Datensätzen der Beispieldatei unterrichten.

Beispiel 5: Verwenden Sie awk, um nur Zeilen mit mehr als einer bestimmten Anzahl von Zeichen zu drucken

Für diese Aufgabe verwenden wir die eingebaute awk-Funktion namens „length“. Diese Funktion gibt die Länge des Eingabestrings zurück. Wenn wir also möchten, dass awk nur Zeilen mit mehr oder sogar weniger als der Anzahl von Zeichen ausgibt, können wir die Längenfunktion wie folgt verwenden:

Zum Drucken von Zeilen mit Zeichen, die größer als eine Zahl sind:

$ awk 'length($0) > n' Dateiname.TXT

Zum Drucken von Zeilen mit weniger als einer 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 gibt nur die Zeilen aus meiner Beispieldatei aus, die mehr als 30 Zeichen enthalten:

$ awk 'Länge($0) > 30' Beispieldatei.TXT

Beispiel 6: Verwenden Sie awk, um die Befehlsausgabe in einer anderen Datei zu speichern

Mit dem Umleitungsoperator '>' 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 > Ausgabedatei.TXT

Beispiel:

In diesem Beispiel verwende ich den Umleitungsoperator mit meinem awk-Befehl, um nur die Namen der Mitarbeiter (Spalte 1) in eine neue Datei zu drucken:

$ awk 'print $1' Beispieldatei.txt > mitarbeiter_namen.TXT

Ich habe durch die cat-Befehle überprüft, dass die neue Datei nur die Namen der Mitarbeiter enthält.

Beispiel 7: Verwenden Sie awk, um nur nicht leere Zeilen aus einer Datei zu drucken

Awk hat einige eingebaute Befehle, mit denen Sie die Ausgabe filtern können. Zum Beispiel wird der NF-Befehl verwendet, um die Felder im aktuellen Eingabedatensatz zu zählen. Hier verwenden wir den NF-Befehl, um nur die nicht leeren Zeilen der Datei zu drucken:

$ awk 'NF > 0' Beispieldatei.TXT

Natürlich 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 Gesamtzahl der Zeilen in einer Datei zu zählen

Eine weitere eingebaute Funktion namens NR zählt die Anzahl der Eingabedatensä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 'END print NR ' Beispieldatei.TXT

Dies waren die grundlegenden Informationen, die Sie benötigen, um mit dem Aufteilen von Dateien mit dem Befehl awk zu beginnen. Sie können die Kombination dieser Beispiele verwenden, um aussagekräftigere Informationen aus Ihrer String-Datei über awk . abzurufen.

Installieren Sie das neueste OpenRA-Strategiespiel auf Ubuntu Linux
OpenRA ist eine Libre/Free Real Time Strategy Game Engine, die die frühen Westwood-Spiele wie den Klassiker Command & Conquer: Red Alert Red nachbilde...
Installieren Sie den neuesten Dolphin Emulator für Gamecube & Wii unter Linux
Mit dem Dolphin Emulator können Sie Ihre ausgewählten Gamecube- und Wii-Spiele auf Linux-Personalcomputern (PC) spielen. Als frei verfügbarer Open-So...
So verwenden Sie die GameConqueror-Cheat-Engine unter Linux
Der Artikel enthält eine Anleitung zur Verwendung der GameConqueror-Cheat-Engine unter Linux. Viele Benutzer, die Spiele unter Windows spielen, verwen...