Einführung, Tutorial und Referenz

Awk

Arrays

Die Namen von AWK-Arrays unterliegen der gleichen Syntax wie andere Variable. Auch wenn die Arrays in AWK denjenigen in C sehr ähnlich sind, gibt es wesentliche Unterschiede:
  • Wie alle anderen Variablen auch, müssen Arrays in AWK nicht initialisiert werden, insbesondere muss die Größe nicht vorher festgelegt werden.
  • Als Indezes können beliebige Strings verwendet werden und Integer als Indizes müssen nicht aufeinanderfolgend sein!
  • Es handelt sich um assoziative Arrays, d.h. jedes Array ist eine Menge von Paaren bestehend aus Index und zugehörigem Wert.

Im folgenden Beispiel werden verschiedene Temperaturen dem Array "Temperatur" zugewiesen.

Temperatur["Singen"] = 24
Temperatur["Konstanz"] = 22
Temperatur["Redmond"] = -24



Will man sich das gesamte Array ausgeben lassen, so geht dies wie folgt:

  for (x in Temperatur) {
    print "Temperatur in "x":  "Temperatur[x]
  }



Worthäufigkeiten in einem Text


Das folgende Skript ermittelt die Worthäufigkeiten in einer Datei. Jedes Wertepaar einer Ausgabezeile entspricht: (Länge der Worte, Häufigkeit)

Anmerkung: NF ist eine vordefinierte Variable, die die Anzahl der Felder pro Zeile angibt. Jedes Feld (field) ist standardmäßig durch Leerzeichen, Zeilenanfang oder Zeilenende begrenzt. Man kann den Feld-Seperator durch folgende Anweisung von einem Leerzeichen z.B. zu einem Komma ändern: FS = ","


{
  for (i=1; i <= NF; i++) {
    wlen[length($i)]++
  }
}

END {
  for (x in wlen) {
    print x" "wlen[x]
  }
}





© Copyright 2004 - 2008, Bodenseo, Linux-Kurse am Bodensee, Bernd Klein