Awk Grundlagen: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
| Zeile 1: | Zeile 1: | ||
| − | = Awk – Grundlagen = | + | == Awk – Grundlagen == |
* Awk ist ein mächtiges Textverarbeitungswerkzeug in der Bash, das Daten zeilenweise analysiert und bearbeitet. | * Awk ist ein mächtiges Textverarbeitungswerkzeug in der Bash, das Daten zeilenweise analysiert und bearbeitet. | ||
Aktuelle Version vom 18. Oktober 2025, 08:53 Uhr
Awk – Grundlagen
- Awk ist ein mächtiges Textverarbeitungswerkzeug in der Bash, das Daten zeilenweise analysiert und bearbeitet.
- Es eignet sich besonders für strukturierte Textdateien wie CSV, Logdateien oder tabellarische Ausgaben.
- Awk arbeitet mit Feldern und Mustern, wobei jede Zeile standardmäßig in Felder unterteilt wird (Standard-Trenner: Leerzeichen oder Tabulator).
Grundprinzip
- Jede Zeile einer Datei wird aufgerufen, Awk prüft Muster und führt dazugehörige Aktionen aus.
- Standardfelder: $1, $2, … für die Felder der aktuellen Zeile, $0 für die gesamte Zeile.
- Aktionen werden in geschweifte Klammern gesetzt: { Aktion }
- Awk führt automatisch eine Schleife über alle Zeilen der Eingabe durch.
Programmstruktur
- BEGIN { Aktion } → Wird vor der ersten Zeile ausgeführt
- Muster { Aktion } → Wird für jede passende Zeile ausgeführt
- END { Aktion } → Wird nach der letzten Zeile ausgeführt
Eingebaute Variablen
- FS → Feldtrennzeichen (Input Field Separator)
- OFS → Ausgabe-Feldtrennzeichen (Output Field Separator)
- RS → Zeilentrennzeichen (Record Separator)
- ORS → Ausgabe-Zeilentrennzeichen (Output Record Separator)
- NF → Anzahl Felder in aktueller Zeile (Number of Fields)
- NR → Aktuelle Zeilennummer (Number of Record)
- FNR → Zeilennummer in aktueller Datei
- FILENAME → Name der aktuellen Eingabedatei
Syntax
- awk 'Muster { Aktion }' datei
- awk -F',' '{ print $1 }' datei.csv
- awk -F: -v OFS=';' '{ print $1, $3 }' datei.txt
- awk -f skript.awk datei.txt
Wichtige Optionen
- -F → Feldtrennzeichen festlegen
- -v → Variablen von außen an Awk übergeben
- -f → Awk-Befehle aus einer Datei laden
Operatoren
- Arithmetisch: + - * / % ^
- Vergleich: == != < <= > >=
- Logisch: && || !
- Regex: ~ !~ (Match/Non-Match)
- Inkrement: ++ --
- Zuweisung: = += -= *= /= %= ^=
Kontrollstrukturen
- if (Bedingung) { Aktion } else { Aktion }
- for (i=1; i<=NF; i++) { Aktion }
- while (Bedingung) { Aktion }
- do { Aktion } while (Bedingung)
- break / continue / next / exit
Eingebaute Funktionen
- Mathematisch: sqrt(), log(), exp(), sin(), cos(), int()
- String: length(), substr(), index(), split(), toupper(), tolower()
- Zeit: systime(), strftime()
- I/O: getline, print, printf
Hinweise
- Awk ist besonders geeignet für Auswertungen, Filterungen und Berichte aus Textdateien.
- Muster können reguläre Ausdrücke, Zahlenvergleiche oder logische Bedingungen sein.
- Aktionen können Druckbefehle (print), Berechnungen oder Bedingungen enthalten.
- Awk-Skripte können in externen Dateien gespeichert und mit -f geladen werden.
- Variablen müssen nicht deklariert werden und sind standardmäßig 0 oder leerer String.
Aufgaben
- Gib die zweite Spalte einer Datei aus.
- Prüfe, wie Awk eine Datei mit Semikolon als Trennzeichen verarbeitet.
- Filtere alle Zeilen, die das Wort "ERROR" enthalten.
- Speichere das Ergebnis in einer neuen Datei.
- Zähle die Anzahl der Zeilen in einer Datei.
- Berechne die Summe der Werte in der dritten Spalte.
- Erstelle einen Bericht mit Kopfzeile und Gesamtsumme.