Awk: Grundlagen: Das awk-Kommando

Aus Wikibooks


Das Kommando awk kann in einem Unix-Terminal aufgerufen werden.


awk in einem Unix-Terminal


Das awk-Skript kann direkt auf der Kommandozeile beim awk-Kommando angegeben werden oder awk liest das Skript aus einer Datei. Die Dateieingabe erfolgt über die Standardeingabe oder auch durch Einlesen von einer oder mehrerer Eingabedateien. Die Ausgabe erfolgt standardmäßig auf die Standardausgabe. Mit den üblichen Unix-Umleitungsbefehlen kann aber auch in Dateien, auf die Standardfehlerausgabe, etc. geschrieben werden. Mittels Pipeline kann awk auch mit anderen Unix-Kommandos interagieren.

Nachfolgend sind einige typische Aufrufvarianten des awk-Kommandos aufgelistet.

1) Das awk-Skript wird direkt beim awk-Kommando eingetippt und ausgeführt. Es wird von der Standardeingabe gelesen.

awk 'awk-skript'

Die Hochkommata ' dienen dazu, das Skript vor der Shell zu "verstecken". Beispiel für ein Skript ohne Eingabe:

awk 'BEGIN{print "Hello World!"}'

2) Das awk-Skript wird direkt beim awk-Kommando eingetippt und für die angegebene(n) Eingabedatei(en) ausgeführt

awk 'awk-skript' eingabedateien(en)

Die einzelnen Datensätze werden dann standardmäßig mittels des Newline-Zeichens \n (Enter) getrennt. Das Ende der Datei wird bei Unix durch Drücken der Tastenkombination Strg-D angezeigt.

3) Optional kann das awk-Skript in einer Skriptdatei im ASCII-Textformat gespeichert werden. Der awk-Aufruf sieht dann folgendermaßen aus

awk -f skriptdatei eingabedateien(en)

4) oder

awk -f skriptdatei

Die Option -f (file) signalisiert awk, dass die nachfolgende Angabe die Skriptdatei darstellt. Weitere awk-Optionen werden im Kapitel awk-Einstellungen behandelt.

5) Für direkt ausführbare awk-Skripte wird in der Skriptdatei als erste Zeile

#!/bin/awk -f 

eingetragen. Der Pfad muss natürlich an die Gegebenheiten des Systems angepasst werden. Die Skriptdatei wird mittels chmod-Kommando als ausführbar markiert und schon kann die Datei wie ein gewöhnliches Programm aufgerufen werden, z.B.

./skriptdatei eingabedatei(en)

6) Pipeline

unix-kommando | awk 'awk-skript'

Beispiel für die Verwendung in einer Pipe:

 echo „Ein Satz aus mehreren Wörtern“ | awk '{print $4}'

Ausgegeben wird das vierte Wort „mehreren“.

7) Umleitung

awk -f skriptdatei eingabedatei(en) > ausgabedatei