Awk Grundlagen: Unterschied zwischen den Versionen

Aus Xinux Wiki
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.