Vérifier si une awk tableau contient une valeur

Avec Perl, vous pouvez vérifier si un tableau contient une valeur

$ perl -e '@foo=(444,555,666); print 555 ~~ @foo ? "T" : "F"'
T

Cependant avec awk, cette commande similaire est en train de vérifier les index de tableau plutôt que de
les valeurs

$ awk 'BEGIN {split("444 555 666", foo); print 555 in foo ? "T" : "F"}'
F

Comment puis-je vérifier si un tableau contient une valeur particulière avec awk?

Je crois que votre seule option est de boucle.
Comme Etan dit, vous avez besoin d'une boucle for. Vous pouvez obtenir un peu souple résultat en créant un nouveau tableau (hash) avec les valeurs clés, par exemple: awk 'BEGIN { split("444 555 666", foo); for(i=1; i<=length(foo); i++) bar[foo[i]]; print 555 in bar ? "T" : "F" }'
Ne pouvez-vous pas simplement utiliser for( i in foo ) bar[foo[i]] à la place?
Vous êtes de droite, plus courte et plus propre, de sorte qu'il devient: awk 'BEGIN { split("444 555 666", foo); for(i in foo) bar[foo[i]]; print 555 in bar ? "T" : "F" }'.

OriginalL'auteur Steven Penny | 2014-11-04