Gawk/Beispiele
Erscheinungsbild
	
	
AWK ist eine Programmiersprache um Textdateien zu ändern.
Einführung
- AWK kann man aufrufen durch
- awk-Kommando in der Shell-Konsole
 - In Shell- oder in awk-Scripte
 
 - awk wartet auf Daten von Eingabeströmen aus Dateien oder aus der Standardeingabe
 - awk arbeitet Zeile für Zeile bis zum Dateiende
 
Syntax & Aufbau
Die allgemeine Syntax lautet:
$ awk 'Programm' Datei oder $ awk -f Programmdatei Datei
Der Aufbau eines awk-Programms:
- Optionaler Anfang(BEGIN), der einmalig ausgeführt wird
 - Hauptprogramm aus Anweisungen, das für jede Eingabezeile erneut ausgeführt wird
 - Optionales Ende(END), der einmalig ausgeführt wird
 
Eine Anweisung wiederum:
- hat ein optionales Muster
 - gefolgt von einem Kommandoblock in geschweiften Klammern
 
/Muster/  {Kommando;
           Kommando;
           ...
          }
Ein Beispiel:
BEGIN{ 
      print "Zählen von Eingabezeilen";      
      zaehler=0;
     }
{ zaehler++; }
END{ 
      print "Ergebnis: " zaehler;
   }
Anwendungen
Eine einfache Textdatei:
1. Hier ist ein Text mit Inhalt A Eine Zeile 2. Tim & Struppi A Was war das? B Aktion und Reaktion 3. Reisig schmeckt am Besten A Nein, stimmt nicht B Doch !
Einzeiler-Kommandos
- Gibt Anzahl der Eingabezeilen zurück
 
$ awk 'END {print NR}'
----------------------
10
- Zeile Nr. 5 zurückgeben
 
$ awk 'NR == 5' ---------------------- A Was war das?
- Zeilen ab Zeile Nr.6 ausgeben
 
$ awk 'NR > 6' ---------------------- 3. Reisig schmeckt am Besten A Nein, stimmt nicht B Doch !
- Zeilen ausgeben mit mehr als 4 Felder
 
$ awk 'NF > 4' ---------------------- 1. Hier ist ein Text mit Inhalt 3. Reisig schmeckt am Besten
- Jede Zeile mit einer Zeilennummer versehen
 
$ awk '{print NR, $0}'
-----------------------
1 1. Hier ist ein Text mit Inhalt
2 A Eine Zeile
3 
4 2. Tim & Struppi
5 A Was war das?
6 B Aktion und Reaktion
7 
8 3. Reisig schmeckt am Besten
9 A Nein, stimmt nicht
10 B Doch !
Wichtige Variablen
- awk arbeitet unter der Annahme, dass die Eingabe strukturiert ist
 - Jedes Feld ist eine Zeichenfolge, die durch Feldseperatoren begrenzt ist
 - $ ist der Feldoperator
 - $1 ist das erste Feld.
 - $0 steht für die gesamte Zeile, die gerade bearbeitet wird.
 
$ awk '{print $1}'
------------------------
1.
A
2.
A
B
3.
A
B