Les tableaux |
![]() |
![]() |
La commande awk |
Les tableaux multidimensionnels
Un tableau est une variable se composant d'un certains nombres d'autres variables (chaînes de caractères, numériques,...), rangées en mémoire les unes à la suite des autres. Le tableau est dit unidimensionnelle quand la variable élément de tableau n'est pas elle même un tableau. Dans le cas de tableaux imbriqués on parle de tableau unidimensionnels.
Les termes matrice, vecteur ou table sont équivalents à tableau.
Vous pouvez définir un tableau unidimensionnel avec la syntaxe suivante: tab[index]=variable, l'index est un numérique (mais pas obligatoirement, voir les tableaux associatifs), la variable peut être soit un numérique, soit une chaîne de caractère. Il n'est pas nécessaire de déclarer un tableau, la valeur initiale des éléments est une chaîne vide ou zéro. Exemple de définition d'un tableau avec une boucle for.
var=1 | |
for (i=1;i<=NF;i++) | |
{ mon-tab[i]=var++} |
On dispose de la fonction delete pour supprimer un tableau (delete tab). Pour supprimer un élément de tableau on tapera delete tab[index].
Un tableau associatif est un tableau unidimensionnel, à ceci près que les index sont des chaînes de caractères. Exemple:
age["olivier"]=27 | |
age["veronique"]=25 | |
age["benjamin"]=5 | |
age["veronique"]=3 | |
for (nom in age) | |
{ print nom " a " age[nom] "ans" } |
On a un tableau age avec une chaîne de caractères prénom comme index, on lui affecte comme éléments de tableau un numérique (age de la personne mentionnée dans le prénom). Dans la boucle for la variable nom est remplie successivement des chaînes de caractères de l'index (olivier, veronique, ...).
Les valeurs de l'index ne sont pas toujours triées.
awk n'est pas prévu pour gérer les tableaux multidimensionnels (tableaux imbriqués, ou à plusieurs index), néanmoins on peut simuler un tableau à deux dimensions de la manière suivante. On utilise pour cela la variable prédéfinie SUBSEP qui, rappelons le, contient le séparateur d'indiçage. Le principe repose sur la création de deux indices (i, j) qu'on va concaténer avec SUBSEP (i:j).
SUBSEP=":" | |
i="A",j="B" | |
tab[i,j]="Coucou" |
L'élément de tableau "Coucou" est donc indexé par la chaîne "A:B".