Comment afficher tout le contenu d'un tableau awk?

41

Dans ma compréhension, le tableau awk est quelque chose comme dict Python.

J'ai donc écrit le code ci-dessous pour l'explorer:

awk '{my_dict[$1] = $2} END { print my_dict}' zen

Et j'ai eu: awk: can't read value of my_dict; it's an array name.

Comme la première colonne n’est pas un nombre, comment pourrais-je lire le contenu total du tableau ou le parcourir?

Zen
la source

Réponses:

60

Vous pouvez parcourir les clés du tableau et extraire les valeurs correspondantes:

awk '{my_dict[$1] = $2} END { for (key in my_dict) { print my_dict[key] } }' zen

Pour obtenir un résultat similaire à celui obtenu avec un dictionnaire Python, vous pouvez également imprimer la clé:

awk '{my_dict[$1] = $2} END { for (key in my_dict) { print key ": " my_dict[key] } }' zen

Cela fonctionne quel que soit le type de clé.

Stephen Kitt
la source
14

Cela ferait une boucle dans le tableau:

END { for (i in my_dict) print my_dict[i] }

i est l'index.

le chaos
la source
9

Array dans awkn'est pas un objet de première classe comme dictionnaire dans Python. Dans awk, un nom de tableau sans indice ne peut être utilisé que dans deux contextes :

  • Un paramètre dans une définition de fonction ou un appel de fonction.
  • Nom jeton après mot clé in.

Dans un autre contexte, awkune erreur sera générée.

Vous avez besoin d'une forboucle pour itérer et imprimer le contenu d'un tableau:

$ echo 1 2 | awk '{my_dict[$1] = $2};END {for(i in my_dict) print my_dict[i]}'
2
cuonglm
la source