Awk Grundlagen: Unterschied zwischen den Versionen

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
 
(Eine dazwischenliegende Version desselben Benutzers wird nicht angezeigt)
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.
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.

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.