8.9 Tabellen im awk

Alle Tabellen im awk sind assoziativ. D.h. Sie werden über Strings als Index
angesprochen. Der Index wird in einer eckigen Klammerung [index] angegeben.
Natürlich können numerische Werte als Index verwendet werden, sie werden aber
intern als Strings behandelt.

Mehrdimensionale Tabellen können verwendet werden, sie werden vom awk jedoch intern eindimensional abgebildet.
Die Indizes müssen beim Ansprechen durch Komma getrennt werden   array[i,j,k]
awk  verwendet den Inhalt der Variable SUBSEP als Separator um einen eindeutigen Index zu erzeugen.

SUBSEP  	Trennzeichen zwischen mehreren Indizes einer Tabelle (Default
 		"\034").Da intern nur eindimensional gearbeitet wird, wird auf diese
 		Weise ein eindeutiger Index erzeugt.
Der Index wird innerhalb von [ ] angegeben.
	      		i = "A" ; j = "B" ; k = "C"
	      		x[i, j, k] = "hello, world\n"
           	Intern erfolgt der Zugiff über den String "A\034B\034C".

8.9.1 in array Konstrukt

Der Special-Operator  'in' kann in einem if verwendet werden, um zu testen ob der Tabellenplatz 
mit dem angegebenen Index existiert.
        if (val in array)
	   print array[val]

In einem for oder while wird dagegen die Tabelle abgearbeitet und es wird jeder
vorhandene Index auf denTabellenplatz zur Verfügung gestellt.


8.9.2 for (var in array) statement

END { for (user in bytes) { anz+=1 printf " %-8s %8d %8d %10d \n", user, bytes[user] } }

8.9.3 delete Löschen von Tabellenelementen und Tabellen

Ein einzelnes Tabellenelement kann mit delete array[index] gelöscht werden.
Durch delete array  wird der Inhalt der gesamten Tabelle gelöscht.


8.9.4 Parameterü;bernahme ARGC, ARGV


Die Argumente der Kommandozeile sind innerhalb des awk verfügbar. Die Tabelle
ARGV[0]  bis ARGV[ARGC-1]  enthalten die übergebenen Parameter.
Achtung: Die optionalen Parameter ( z.B.    -v var=val    -FS: ) sind nicht in der
               Tabelle enthalten.

	     ARGV[0] 	ist der Name des Programms (i.d.R. awk
	     ARGV[1]	ist der erste Dateiname der hinter dem Script angegeben wird.
			Im nachfolgenden Beispiel substituiert die Shell * durch die
			Dateinamen.
awk ' BEGIN { for (i=0; i < ARGC; i++) print "%d. %s\n",i, ARGV[i] } ' ' * |______ Das Metazeichen wird von der Shell aufgelöst. Die Dateinamen werden an den awk übergeben.