2010-12-04 3 views

Antwort

18

info gawk sagt unter anderem:

Arrays in 'awk' oberflächlich Arrays in anderen Programmiersprachen Sprachen ähneln, aber es gibt grundlegende Unterschiede. In 'awk' ist es nicht notwendig, die Größe eines Arrays anzugeben, bevor Sie es verwenden. Darüber hinaus kann eine beliebige Zahl oder Zeichenfolge in 'awk', nicht nur aufeinanderfolgende Ganzzahlen, als Array-Index verwendet werden. In den meisten anderen Sprachen müssen Arrays vor der Verwendung "deklariert" werden, einschließlich einer Angabe, wie viele Elemente oder Komponenten sie enthalten enthalten. In solchen Sprachen bewirkt die Deklaration, dass ein zusammenhängender Block des Speichers für diese vielen Elemente zugewiesen wird. Normalerweise muss ein Index in das Array eine positive ganze Zahl sein.

Wenn Sie jedoch wollen „erklären“ eine Variable als Array es so Referenzierung später fälschlicherweise als ein Skalar erzeugt einen Fehler, können Sie dies in Ihrer BEGIN Klausel enthalten:

split("", n_to_n_delay) 

die Erstelle ein leeres Array.

Dies kann auch verwendet werden, um ein bestehendes Array zu leeren. Während gawk die Möglichkeit hat, delete dafür zu verwenden, andere Versionen von AWK nicht.

+0

TanX Denis, es ist vollständige Informationen für mich verwenden. – Am1rr3zA

1

Ich glaube nicht, dass Sie Arrays in Awk definieren müssen. Sie verwenden sie einfach wie im folgenden Beispiel:

{ 
    if ($1 > max) 
    max = $1 
    arr[$1] = $0 
} 

END { 
    for (x = 1; x <= max; x++) 
    print arr[x] 
} 

Beachten Sie, dass es keine separate Definition gibt. Das Beispiel stammt aus The AWK Manual.

+0

Ja, awk hat nur hashmaps und sie brauchen keine Deklaration. –