Eingebaute Variablen

awk verfügt über einige eingebaute Variable. Die wichtigsten davon sind:

ARGC
Anzahl der Befehlszeilenparameter
ARGV
Array der Befehlszeilenparameter. Die Indizes laufen von 0 bis ARGC-1. Durch ändern von ARGV kann man vom Script aus weitere Dateien öffnen.
CONVFMT
Das voreingestellte Format für Zahlen. Standardwert ist "%.6g".
ENVIRON
Stellt die Umgebungsvariablen als assoziatives Array zur Verfügung. Z.B. liefert ENVIRON["HOME"] das Homeverzeichnis.
ERRNO
Text zum letzten aufgetretenen Fehler bei einer Dateioperation
FIELDWIDTHS
Wenn man diese Variable mit einer durch Leerzeichen getrennten Liste von Zahlen füllt, so werden die Felder nicht durch die in FS angegebenen Trennzeichen, sondern an den entsprechenden festen Positionen getrennt.
FNR
Die Nummer des aktuellen Eingabesatzes. Ein awk '{print FNR, $0}' liefert ein Listing mit Zeilennummern.
IGNORECASE
Hat diese Variable einen von Null verschiedenen Wert, so werden alle Stringvergleiche, das Trennen der Eingabe mit FS bzw. RS und die Auswertung regulärer Ausdrücke unabhängig von Groß- bzw. Kleinschreibung vorgenommen.
NF
Liefert die Anzahl Felder im aktuellen Eingabesatz.
OFMT
Das Standard-Ausgabeformat für Zahlen. Voreingestellt ist "%.6g"
OFS
Das Feldtrennzeichen für die Ausgabe. Voreingestellt ist ein Leerzeichen.
ORS
Das Satztrennzeichen für die Ausgabe. Voreingestellt ist LF. Braucht man Zeilenenden im DOS-Format (CR+LF), kann man das (unter anderem) mit dem awk erledigen: awk -v 'ORS=\r\n' '{print $0}'

Es existieren weitere spezielle Variable, auf die hier nicht weiter eingegangen werden soll.

Typen

awk kennt keine echten Variablentypen, es wird nur mit Strings hantiert. Diese werden allerdings als Zahlen aufgefaßt, wenn das im Zusammenhang sinnvoll ist. Soll die Auswertung als Zahl erzwungen werden, so addiert man eine 0.

Neben den einfachen Strings kennt awk noch assoziative Arrays. Die Indizes eines solchen Arrays sind (im Gegensatz zu C) Strings. Man kann auch mehrdimensionale Arrays verwenden.


prev next