Awk Grundlagen: Unterschied zwischen den Versionen

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
Keine Bearbeitungszusammenfassung
Keine Bearbeitungszusammenfassung
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.