Awk Beispiele
Zur Navigation springen
Zur Suche springen
Awk – Beispiele
- Praktische Beispiele für die Arbeit mit Awk.
Einfache Spaltenausgabe
- awk '{ print $1 }' datei.txt
→ Gibt nur die erste Spalte jeder Zeile aus
- awk '{ print $1, $3 }' datei.txt
→ Gibt die erste und dritte Spalte jeder Zeile aus
- awk '{ print $NF }' datei.txt
→ Gibt die letzte Spalte jeder Zeile aus
- awk '{ print $(NF-1) }' datei.txt
→ Gibt die vorletzte Spalte jeder Zeile aus
Feldtrennzeichen ändern
- awk -F':' '{ print $1, $3 }' /etc/passwd
→ Verwendet Doppelpunkt als Trennzeichen (typisch für /etc/passwd)
- awk -F';' '{ print $1, $2 }' daten.csv
→ Verwendet Semikolon als Trennzeichen (typisch für CSV)
- awk -F'[ ,]' '{ print $1, $2 }' datei.txt
→ Verwendet Leerzeichen ODER Komma als Trennzeichen
- awk -F'\t' '{ print $1, $3 }' tabellarisch.txt
→ Verwendet Tabulator als Trennzeichen
Zeilen filtern
- awk '/ERROR/ { print $0 }' log.txt
→ Gibt nur Zeilen aus, die "ERROR" enthalten
- awk '$3 > 100 { print $1, $3 }' daten.txt
→ Gibt erste und dritte Spalte aus, wenn dritte Spalte > 100
- awk 'NR == 1 || $2 > 50' datei.txt
→ Gibt erste Zeile (Header) und alle Zeilen mit Spalte 2 > 50 aus
- awk 'NF > 3' datei.txt
→ Gibt nur Zeilen mit mehr als 3 Feldern aus
- awk 'length($0) > 80' datei.txt
→ Gibt nur Zeilen mit mehr als 80 Zeichen aus
Bedingte Anweisungen
- awk '{ if ($3 > 100) print $1, $3 }' datei.txt
→ Wenn dritte Spalte > 100, gib erste und dritte Spalte aus
- awk '{ if ($2 == "JA") print $1; else print "NEIN" }' daten.txt
→ Wenn zweite Spalte "JA" ist, gib erste Spalte aus, sonst "NEIN"
- awk '{ status = ($3 > 50) ? "HOCH" : "NIEDRIG"; print $1, status }' datei.txt
→ Ternary Operator: Weist "HOCH" oder "NIEDRIG" zu basierend auf Spalte 3
Summen und Berechnungen
- awk '{ sum += $2 } END { print sum }' datei.txt
→ Berechnet Summe der zweiten Spalte und gibt sie am Ende aus
- awk '{ print $1, $2*2 }' datei.txt
→ Gibt erste Spalte und den doppelten Wert der zweiten Spalte aus
- awk '{ sum += $3; count++ } END { print "Durchschnitt:", sum/count }' datei.txt
→ Berechnet Durchschnitt der dritten Spalte
- awk '{ max = ($1 > max) ? $1 : max } END { print "Maximum:", max }' datei.txt
→ Findet den Maximalwert in der ersten Spalte
Formatierte Ausgabe
- awk '{ printf "%-10s %5d\n", $1, $2 }' datei.txt
→ Formatierte Ausgabe: Text linksbündig, Zahl rechtsbündig
- awk '{ printf "Name: %s, Wert: %.2f\n", $1, $2 }' daten.txt
→ Formatierte Ausgabe mit Text und Gleitkommazahl (2 Nachkommastellen)
- awk 'BEGIN { print "Header"; print "------" } { print $1, $2 }' datei.txt
→ Gibt zuerst Header aus, dann die Daten
BEGIN und END Blöcke
- awk 'BEGIN { FS=":"; OFS=" | " } { print $1, $3 }' /etc/passwd
→ Setzt Feldtrennzeichen vor Verarbeitung und ändert Ausgabe-Trennzeichen
- awk 'END { print NR, "Zeilen verarbeitet" }' datei.txt
→ Gibt Gesamtzahl der Zeilen am Ende aus
- awk 'BEGIN { sum=0 } { sum+=$1 } END { print "Summe:", sum }' datei.txt
→ Initialisiert Variable, summiert und gibt Ergebnis aus
Variablen von außen
- awk -v min=50 '$2 > min { print $0 }' datei.txt
→ Übergibt Variable "min" an Awk und filtert danach
- awk -v datum="2024" '$1 == datum' log.txt
→ Sucht nach Zeilen, deren erste Spalte dem übergebenen Datum entspricht
Mehrere Aktionen
- awk '{ print $1; print $2 }' datei.txt
→ Gibt erste und zweite Spalte in separaten Zeilen aus
- awk '{ for(i=1; i<=NF; i++) print $i }' datei.txt
→ Gibt jedes Feld einer Zeile in separater Zeile aus
Aufgaben
- Gib die erste und letzte Spalte einer CSV-Datei aus.
- Zeige alle Zeilen an, bei denen das zweite Feld größer als 10 ist.
- Berechne die Summe der dritten Spalte.
- Filtere alle Zeilen, die "WARN" enthalten und gebe nur die ersten beiden Felder aus.
- Erstelle einen formatierten Bericht mit Kopfzeile und Summe.
- Zähle wie viele Zeilen mehr als 5 Felder haben.