Startseite > Textverarbeitung & Suche > awk

awk Schnellanleitung

awk ist ein Stream-Verarbeitungstool, das Textströme zeilen- und feldweise verarbeitet, um Daten zu filtern, zu transformieren und zu aggregieren. Hier sind die gängigen Optionen und typischen Muster basierend auf GNU awk (gawk) zusammengefasst.

Übersicht

awk liest die Eingabe als Datensätze (standardmäßig Zeilen), teilt sie durch einen Feldtrenner (FS) und wendet dann Muster/Aktionen { ... } an, um die gewünschte Ausgabe (OFS) zu erzeugen. Häufige Anwendungen sind das Extrahieren von Spalten, bedingtes Filtern, Berechnen von Summen/Durchschnitten und Formatkonvertierungen.

Wichtige eingebaute Variablen

Die wichtigsten eingebauten Variablen zur Steuerung von Ein-/Ausgabe und Formatierung.

  • NR: Anzahl der bisher gelesenen Datensätze (Zeilen)
  • FNR: Datensatznummer in der aktuellen Datei
  • NF: Anzahl der Felder im aktuellen Datensatz
  • FS: Eingabefeld-Trenner (Standard: Leerzeichen)
  • OFS: Ausgabefeld-Trenner (Standard: Leerzeichen)
  • RS: Datensatz-Trenner (Standard: Zeilenumbruch)
  • ORS: Ausgabe-Datensatz-Trenner (Standard: Zeilenumbruch)

Grundlegende Form

awk 'Muster { Aktion }' input.txt
awk -f program.awk input.txt

Der Muster-/Aktionsblock wird in einer Zeile oder über eine Skriptdatei mit -f übergeben.

Wichtige Optionen

Häufig verwendete Optionen im praktischen Einsatz, gruppiert nach Situationen. Inklusive gawk-kompatibler Optionen.

1) Grundlegende Ausführung/Eingabe

2) Feld-/Variablenübergabe

3) Debugging/Kompatibilität (gawk)

4) Hilfe/Version

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.

Häufig verwendete Muster

Spaltenextraktion

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

Gibt nur das 1. und 3. durch Doppelpunkt getrennte Feld aus.

Bedingter Filter

awk '$5 > 100 { print }' data.tsv

Gibt nur Datensätze aus, bei denen der Wert des 5. Feldes größer als 100 ist.

Aggregationsbeispiel

awk '{ sum += $2 } END { print sum }' data.txt

Summe der zweiten Spalte

Variablenübergabe und Format

awk -v OFS=',' '$1=="KEY" { print $1, $2, $3 }' input.txt

Setzt OFS auf Komma und gibt nur bestimmte Schlüssel aus.

Praktische Tipps

Die zeilenweise Stream-Verarbeitung ist in Kombination mit Pipes sehr mächtig.

  • Reguläre Ausdrücke können als Feldtrenner verwendet werden: -F '[,:\t]+'
  • Mehrere -e-Optionen ermöglichen das Schreiben von Programmen in Teilen.
  • Lange Skripte mit -f trennen und mit Git versionskontrollieren.
  • Passen Sie OFS/ORS für das gewünschte Ausgabeformat an.
  • Für große Eingaben die Pipeline vereinfachen und nur die minimal notwendigen Operationen ausführen.

Verwandte Befehle

Funktional ähnliche oder häufig zusammen verwendete Befehle.



Gleiche Kategorie Befehle