2010-12-04 17 views

Répondre

18

info gawk dit, en partie:

tableaux dans « awk » ressemblent superficiellement à des tableaux dans d'autres langages de programmation , mais il existe des différences fondamentales. Dans 'awk', ce n'est pas nécessaire pour spécifier la taille d'un tableau avant de commencer à l'utiliser. De plus, tout nombre ou chaîne dans 'awk', et pas seulement entiers, peut être utilisé comme index de tableau.

Dans la plupart des autres langues, les tableaux doivent être "déclarés" avant utilisation, , y compris une spécification du nombre d'éléments ou de composants qu'ils contiennent . Dans de tels langages, la déclaration provoque l'allocation d'un bloc contigu pour de nombreux éléments. Habituellement, un index dans le tableau doit être un entier positif.

Cependant, si vous voulez « déclarer » une variable comme un tableau afin de référencement ultérieurement par erreur comme un scalaire produit une erreur, vous pouvez inclure dans votre article BEGIN:

split("", n_to_n_delay) 

qui sera créer un tableau vide.

Ceci peut également être utilisé pour vider un ensemble existant. Alors que gawk a la possibilité d'utiliser delete pour cela, d'autres versions de AWK ne le font pas.

+0

TanX Denis, c'est l'utilisation des informations complètes pour moi. – Am1rr3zA

1

Je ne pense pas que vous ayez besoin de définir des tableaux dans awk. Vous les utilisez simplement comme dans l'exemple ci-dessous:

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

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

Notez qu'il n'existe pas de définition distincte. L'exemple est tiré de The AWK Manual.

+0

Oui, awk a seulement hashmaps et ils n'ont pas besoin de déclaration. –