So verwenden Sie den awk-Befehl unter Linux

Unter Linux ist awk ein Dynamo zur Textmanipulation über die Befehlszeile sowie eine leistungsstarke Skriptsprache. Hier ist eine Einführung in einige seiner coolsten Funktionen.

Wie awk zu seinem Namen kam

Der awk-Befehl wurde mit den Initialen der drei Personen benannt, die 1977 die Originalversion geschrieben haben: Alfred Aho, Peter Weinberger, und Brian Kernighan. Diese drei Männer waren aus dem legendären AT&T Bell-Labors Unix-Pantheon. Mit den Beiträgen vieler anderer hat sich awk seitdem weiterentwickelt.

Es ist eine vollständige Skriptsprache sowie ein vollständiges Toolkit zur Textbearbeitung für die Befehlszeile. Wenn dieser Artikel Appetit macht, können Sie Schau dir jedes Detail an über awk und seine Funktionalität.

Regeln, Muster und Aktionen

awk arbeitet an Programmen, die Regeln enthalten, die aus Mustern und Aktionen bestehen. Die Aktion wird für den Text ausgeführt, der dem Muster entspricht. Muster werden in geschweifte Klammern ({}) eingeschlossen. Ein Muster und eine Aktion bilden zusammen eine Regel. Das gesamte awk-Programm ist in einfache Anführungszeichen (‚) eingeschlossen.

  So installieren Sie Wine Staging unter Linux

Werfen wir einen Blick auf die einfachste Art von awk-Programm. Es hat kein Muster, also stimmt es mit jeder Textzeile überein, die in es eingegeben wird. Dies bedeutet, dass die Aktion in jeder Zeile ausgeführt wird. Brunnen Verwenden Sie es für die Ausgabe von der wer-Befehl.

Hier ist die Standardausgabe von who:

who

Der

Vielleicht brauchen wir nicht all diese Informationen, sondern möchten nur die Namen auf den Konten sehen. Wir können die Ausgabe von who an awk weiterleiten und dann awk anweisen, nur das erste Feld zu drucken.

Standardmäßig betrachtet awk ein Feld als eine von Leerzeichen umgebene Zeichenfolge, den Anfang einer Zeile oder das Ende einer Zeile. Felder werden durch ein Dollarzeichen ($) und eine Zahl gekennzeichnet. $1 stellt also das erste Feld dar, das wir mit der print-Aktion verwenden, um das erste Feld zu drucken.

  So verschieben Sie Ihr Linux-Home-Verzeichnis auf ein anderes Laufwerk

Wir geben folgendes ein:

who | awk '{print $1}'

awk druckt das erste Feld und verwirft den Rest der Zeile.

Wir können beliebig viele Felder drucken. Wenn wir ein Komma als Trennzeichen hinzufügen, gibt awk zwischen jedem Feld ein Leerzeichen aus.

Wir geben Folgendes ein, um auch die Anmeldezeit der Person auszudrucken (Feld vier):

who | awk '{print $1,$4}'

Es gibt einige spezielle Feldbezeichner. Diese stellen die gesamte Textzeile und das letzte Feld in der Textzeile dar:

$0: Stellt die gesamte Textzeile dar.
$1: Stellt das erste Feld dar.
$2: Stellt das zweite Feld dar.
$7: Stellt das siebte Feld dar.
$45: Stellt das 45. Feld dar.
$NF: Steht für „Anzahl der Felder“ und repräsentiert das letzte Feld.

  6 Linux-USB-Tools zum Reparieren Ihres PCs

Wir geben Folgendes ein, um eine kleine Textdatei anzuzeigen, die ein kurzes Zitat enthält, das zugeschrieben wird Dennis Ritchie:

cat dennis_ritchie.txt

Der

Wir möchten, dass awk das erste, zweite und letzte Feld des Zitats ausgibt. Beachten Sie, dass es, obwohl es im Terminalfenster umbrochen ist, nur eine einzelne Textzeile ist.

Wir geben folgenden Befehl ein:

awk '{print $1,$2,$NF}' dennis_ritchie.txt

Wir kennen diese „Einfachheit“ nicht. ist das 18. Feld in der Textzeile, und das ist uns egal. Was wir wissen ist, dass es das letzte Feld ist, und wir können $NF verwenden, um seinen Wert zu erhalten. Der Punkt wird nur als ein weiteres Zeichen in der betrachtet