Awk : problème avec printf

Bonjour,

j'ai un code d'erreur sur l'affichage de resultats avec le printf

BEGIN { FS=","
#OFMT="%.2f"

print "-----HANDOVER INTER MSC----- \n"," Date Heure Target MSC Succ_Inter_MSC_inc Succ_Inter_MSC_out\n"
}

$7+$15) > 0 {
printf " %14s %12s %12.2f %.2f\n", "20" substr($1,1,2) "-" substr($1,3,2) " " substr($1,7,2) ":" substr($1,9,2) ,
$2 , (($9+$17) / ($7+$15)) *100
{ if (($3 + $19) > 0) {printf ("%.2f\n", ((($5+$21) / ($3+$19)) *100))} else { printf("%.2f\n",0) }}
}

# cela me sert à mettre un zéro dans ce calcul afin d'éviter de faire une division par 0
{ if (($3 + $19) > 0) {printf ("%.2f\n", ((($5+$21) / ($3+$19)) *100))} else { printf("%.2f\n",0) }}

en lancant gawk -f nbrmsclst_kpi.awk NBRMSCLST.data

j'obient l'erreur suivante

gawk: nbrmsclst_kpi.awk:7: (FILENAME=NBRMSCLST.data FNR=1) fatal : pas assez d'arguments pour satisfaire la chaîne de formatage
' %14s %12s %12.2f %.2f
'
^ à court pour celui-ci

merci pour votre support

4 réponses

  1. Contributeur
    hello
    il manque une valeur, le printf en veut 4, il y en a 3
    printf " %14s %12s %12.2f %.2f\n"   
    , "20" substr($1,1,2) "-" substr($1,3,2) " " substr($1,7,2) ":" substr($1,9,2) 
    , $2  
    , (($9+$17) / ($7+$15)) *100 
    1. Tu fais des printf dans un printf ?

      Avec des conditions entre accolades ?

      Tu devrais utiliser un opérateur ternaire.
      test ? alors : sinon


      Par soucis de lisibilité, tu devrais affecter des variables avec les valeurs que tu veux afficher, plutôt que d'afficher les calculs.
      1. j'ai refait avec des paranthèses , c'est pire :-(
        BEGIN { FS=","
        #OFMT="%.2f"

        print "-----HANDOVER INTER MSC----- \n"," Date Heure Target MSC Succ_Inter_MSC_inc Succ_Inter_MSC_out\n"
        }

        ($7+$15) > 0 {
        printf (" %14s %12s %12.2f %.2f\n", "20" substr($1,1,2) "-" substr($1,3,2) " " substr($1,7,2) ":" substr($1,9,2) ,
        $2 , (($9+$17) / ($7+$15)) *100 ,
        { if (($3 + $19) > 0)
        {printf ("%.2f\n", ((($5+$21) / ($3+$19)) *100))}
        else
        { printf("%.2f\n",0)}
        )
        }
        }

        le fichier que je traite à la forme suivante

        1212310700134,CHAMBNG,13,1,13,1,9,1,8,1,5,1,5,1,33,1,28,1,8,1,8,1,0,1,0,1,0,0,0,0,0,1,0,1,0,1,0,1,0,1,0,1,14,1,9,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1
        1212310700134,VELIZNG,0,1,0,1,0,1,0,1,0,1,0,1,1,1,0,1,0,1,0,1,0,1,0,1,0,0,0,0,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1
        1212310700134,LYPRENG,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,0,0,0,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1
        1212310700134,MONANG,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,0,0,0,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1
        1212310700134,FMBEZNG,0,1,0,1,0,1,0,1,0,1,0,1,36,1,34,1,0,1,0,1,0,1,0,1,0,0,0,0,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1
        1212310700134,FMONTNG,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,0,0,0,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1
        1212310700134,ARGENBC,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,0,0,0,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1
        1212310700134,BORDEBC,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,0,0,0,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1
        1212310700134,BORDENG,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,0,0,0,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1
        1212310700134,CHELLNG,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,0,0,0,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1
        1212310700134,SOUSTNG,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,0,0,0,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1
        1212310700134,VANDONG,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,0,0,0,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1
        1212310700134,STEGENG,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,0,0,0,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1
        1212310700134,BEAUJNG,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,0,0,0,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1
        1212310700134,NAVARNG,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,0,0,0,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1
        1212310700134,AMIENNG,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,0,0,0,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1
        1212310700134,LYONNG,39,1,39,1,12,1,12,1,6,1,6,1,72,1,69,1,25,1,25,1,0,1,0,1,0,0,0,0,2,1,2,1,0,1,0,1,0,1,0,1,3,1,2,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1
        1. salut,

          printf " %14s %1
          etc

          Il manque des parenthèses