28.11
2006

AWK Referenz

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össe 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"] = 24Temperatur["Konstanz"] = 22Temperatur["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ässig 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]  }}

powered by performancing firefox

Drucken PDF

Switch to our mobile site