Startseite > Textverarbeitung & Suche > awk

awk -F: Feldtrenner festlegen

awk ist ein leistungsstarkes Textverarbeitungswerkzeug, das zum Finden und Verarbeiten bestimmter Muster sowie zur Datenmanipulation in Dateien oder Streams verwendet wird. Insbesondere die Option `-F` gibt den Trenner (Delimiter) an, der die Felder eines Eingaberecords trennt. Dies ermöglicht das einfache Parsen komplexer Datenstrukturen und das Extrahieren oder Manipulieren gewünschter Felder. Dies ist eine wesentliche Funktion bei der Verarbeitung verschiedener Datenformate wie CSV und Logdateien.

Übersicht

awk ist eine Programmiersprache, die Textdateien zeilenweise liest, jede Zeile in Felder (fields) aufteilt und diese dann gemäß definierten Regeln verarbeitet. Die Option `-F` definiert den Trenner, der als Kriterium für die Feldaufteilung dient. Neben dem standardmäßigen Leerzeichen können verschiedene Trenner wie Kommas, Doppelpunkte, bestimmte Zeichenketten oder reguläre Ausdrücke verwendet werden.

Hauptmerkmale

  • Festlegen benutzerdefinierter Feldtrenner
  • Verwendung regulärer Ausdrücke als Trenner möglich
  • Verarbeitung strukturierter Textdaten wie CSV, Logdateien
  • Einfache Datenextraktion und -transformation

Wichtige Optionen

Der awk-Befehl bietet verschiedene Optionen, aber hier konzentrieren wir uns auf die wichtige Option `-F` im Zusammenhang mit der Feldtrennung.

Feldtrennung

Erzeugter Befehl:

Kombinieren Sie die Befehle.

Beschreibung:

`awk` Führen Sie den Befehl aus.

Kombinieren Sie diese Optionen und führen Sie die Befehle virtuell zusammen mit der KI aus.

Anwendungsbeispiele

Beispiele für die Verarbeitung verschiedener Textdatenformate mit der Option `-F`.

Ausgabe bestimmter Felder aus einer CSV-Datei, getrennt durch Kommas (,)

echo "apple,banana,cherry,date" > data.csv
awk -F',' '{print $1, $3}' data.csv

Gibt das erste und dritte Feld aus der Datei data.csv aus, getrennt durch Kommas.

Ausgabe von Benutzernamen und Shell aus der Datei /etc/passwd, getrennt durch Doppelpunkte (:)

awk -F':' '{print $1, $7}' /etc/passwd

Gibt den Benutzernamen (erstes Feld) und die Login-Shell (siebtes Feld) aus der Datei /etc/passwd aus.

Festlegen mehrerer Trenner (Leerzeichen oder Tabulator) mit regulären Ausdrücken

echo "field1   field2\tfield3" > data.txt
awk -F'[ \t]+' '{print $1, $2}' data.txt

Mehrere aufeinanderfolgende Leerzeichen oder Tabulatoren werden als ein Trenner behandelt, um das erste und zweite Feld auszugeben. (Ähnlich dem Standardverhalten)

Verwendung einer bestimmten Zeichenkette als Trenner

echo "Header---Content Body---Footer" > multi_line_data.txt
awk -F'---' '{print $1, $2}' multi_line_data.txt

Gibt das erste und zweite Feld aus, wobei die Zeichenkette '---' als Feldtrenner in der Eingabe verwendet wird.

Ausgabe des dritten Feldes von Zeilen, bei denen das erste Feld einem bestimmten Wert entspricht

echo "root:x:0:0:root:/root:/bin/bash\nuser:x:1000:1000:user:/home/user:/bin/bash" > users.txt
awk -F':' '$1 == "root" {print $3}' users.txt

Sucht nur nach Zeilen, bei denen das erste Feld 'root' ist, und gibt das dritte Feld aus, wobei die durch Doppelpunkte getrennte Datei verwendet wird.

Tipps & Hinweise

Nützliche Tipps und zu beachtende Punkte bei der Verwendung von awk -F.

Reguläre Ausdruckstrenner

Der an die Option `-F` übergebene Trenner wird als regulärer Ausdruck interpretiert. Daher müssen Sonderzeichen wie `.` oder `*` mit `\.` oder `\*` maskiert werden, um sie als literale Zeichen zu verwenden.

  • Beispiel: `awk -F'\.' '{print $1}' filename` (Verwendet den Punkt (.) als Trenner)
  • Beispiel: `awk -F'[[:space:]]+' '{print $1}' filename` (Verwendet alle Leerzeichen als Trenner)

Interne Variable FS (Field Separator)

Die Option `-F` ist identisch mit dem Setzen der internen Variable `FS`. Sie können den Trenner innerhalb des Skripts dynamisch steuern, indem Sie `FS` im `BEGIN`-Block setzen.

  • Beispiel: `awk 'BEGIN {FS=","} {print $1}' data.csv`

Ausgabefeldtrenner (OFS)

Unabhängig vom Eingabefeldtrenner (`FS`) können Sie die Felder, die mit der `print`-Anweisung ausgegeben werden, durch Setzen der `OFS` (Output Field Separator) Variable trennen. Der Standardwert ist ein Leerzeichen.

  • Beispiel: `awk -F',' 'BEGIN {OFS=":"} {print $1, $3}' data.csv` (Verwendet einen Doppelpunkt anstelle eines Kommas bei der Ausgabe)

Gleiche Kategorie Befehle