Awk Grundlagen: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
| Zeile 9: | Zeile 9: | ||
* Standardfelder: $1, $2, … für die Felder der aktuellen Zeile, $0 für die gesamte Zeile. | * Standardfelder: $1, $2, … für die Felder der aktuellen Zeile, $0 für die gesamte Zeile. | ||
* Aktionen werden in geschweifte Klammern gesetzt: { Aktion } | * 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 == | == Syntax == | ||
* awk 'Muster { Aktion }' datei | * awk 'Muster { Aktion }' datei | ||
* awk -F',' '{ print $1 }' datei.csv | * awk -F',' '{ print $1 }' datei.csv | ||
| + | * awk -F: -v OFS=';' '{ print $1, $3 }' datei.txt | ||
| + | * awk -f skript.awk datei.txt | ||
== Wichtige Optionen == | == Wichtige Optionen == | ||
| Zeile 18: | Zeile 36: | ||
* -v → Variablen von außen an Awk übergeben | * -v → Variablen von außen an Awk übergeben | ||
* -f → Awk-Befehle aus einer Datei laden | * -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 == | == Hinweise == | ||
| Zeile 23: | Zeile 62: | ||
* Muster können reguläre Ausdrücke, Zahlenvergleiche oder logische Bedingungen sein. | * Muster können reguläre Ausdrücke, Zahlenvergleiche oder logische Bedingungen sein. | ||
* Aktionen können Druckbefehle (print), Berechnungen oder Bedingungen enthalten. | * 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 == | == Aufgaben == | ||
| Zeile 29: | Zeile 70: | ||
* Filtere alle Zeilen, die das Wort "ERROR" enthalten. | * Filtere alle Zeilen, die das Wort "ERROR" enthalten. | ||
* Speichere das Ergebnis in einer neuen Datei. | * 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. | ||
Version vom 18. Oktober 2025, 08:52 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.