À ma connaissance, le tableau awk est quelque chose comme python dict.
J'écris donc 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?
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 une sortie similaire à celle que vous obtiendriez 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é.
Cela ferait une boucle à travers le tableau:
END { for (i in my_dict) print my_dict[i] }
i
est l'index.
Un tableau dans awk
n'est pas un objet de première classe comme un dictionnaire dans Python
. Dans awk
, le nom du tableau sans indice ne peut être utilisé que dans deux contextes :
in
.Dans un autre contexte, awk
générera une erreur.
Vous avez besoin d'une boucle for
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