Les tableaux

Les variables Exo sur les critères de sélection

La commande awk

Présentation

Les tableaux unidimensionnels

Les tableaux associatifs

Les tableaux multidimensionnels

Présentation

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.

Les tableaux unidimensionnels

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].

Les tableaux associatifs

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.

Les tableaux multidimensionnels

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".

Retour haut de la page