70 votes

Comment puis-je obtenir la longueur d'un tableau dans awk?

Cette commande

 echo "hello world" | awk '{split($0, array, " ")} END{print length(array) }'

ne fonctionne pas pour moi et donne ce message d'erreur

awk : ligne 1 : référence illégale au tableau du tableau

Pourquoi?

102voto

shellter Points 15304

Lorsque vous divisez un tableau, le nombre d'éléments est renvoyé, vous pouvez donc dire :

 echo "hello world" | awk '{n=split($0, array, " ")} END{print n }'
# ------------------------^^^--------------------------------^^

La sortie est :

 2

18voto

klashxx Points 1695

Je veux juste souligner que:

  • Pas besoin de stocker le résultat de la fonction split pour l'imprimer.
  • Si le séparateur n'est pas fourni pour le fractionnement, le FS par défaut (espace vide) sera utilisé.
  • La partie END est inutile ici.

     echo 'hello world' | awk '{print split($0, a)}'
    

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X