[GAWK] compter nombre de Field

Bonjour tout le monde,

je veux compter le nombre de Field d'une chaîne de caractère saisie par l'utilisateur:
j'ai fais ceci mais ça ne fonctionne pas:

BEGIN {
        printf "votre chaine: "
        getline chaine <"-"
       FS="[=-+]"
}
{
print NF
}


merci beaucoup "j'utilise GAWK"

-

----Mon Nouveau Moi ---------------
Configuration: un peu de tout quoi..du futur j'en est pris un IE 10..un Win 8 (c'est après le 7)..ah autre chose il n' y aura plus de clavier mais à la place une chose qui s'appelle la "trompe-de-saturne"

5 réponses

  1. Contributeur
    hello
    $ gawk -f f1.awk
    votre chaine:  a+b=c-d
    4  a+b=c-d
    
    $ type f1.awk
    BEGIN { FS="[=+-]" ; printf "votre chaine: " ; getline ; chaine=$0 ; print NF,chaine }
    

    getline lit par défaut le standard input, qui est aussi lu par gawk, il y a donc, me semble-t-il ambiguité pour faire de l'interactif, alors que gawk est fait pour traiter un flux
    1. Ah oui, tu modifes le FS ...Je prefere le passer en argument -F ... ;-P

      Quel est l'erreur sorti par gawk ?

      1. merci de ta réponse, mais les champs doivent êtres séparer par les des caractères voir "FS" en plus c'est un script interractif

        merci encore
        1. Bonjour,

          J'aurais plutot fait :" ' { print NF } '

          Maintenant, si c'est sur plusieurs lignes :
          'BEGIN { nbfield=0; }
          { nbfield=nbfield + NF; }
          END { print "Le nombre de champ est :" nbfield }

          Je maitrise pas bien le getline donc je ne sais pas ou t'aider sur ce point ...