.bat incémenter un compteur - Page 2

Résolu
Précédent
  • 1
  • 2
dubcek Messages postés 18807 Date d'inscription   Statut Contributeur Dernière intervention   5 651
 
parce qu'en spécifiant : comme séparateur, 2h:07m:50s n'est plus un seul champ mais 3, il ne faut plus utiliser split, mais sub pour enlever les lettres h, m ou s des champs 10, 11 et 12.
avec sub, je substitue la lettre entre " par rien "" et je n'ai plus de tableau t

$ type f1.awk
{x[$4]+=$8; y[$4]+=$14; sub("h","",$10); sub("m", "", $12);sub("s","",$12); h[$4]+=$10;m[$4]+=$11;s[$4]+=$12} ;
END {for (n in x) { s1=s[n]%60 ; s2=int(s[n]/60); m1=(m[n]+s2)%60;m2=int((m[n]+s2)/60);h1=h[n]+m2;
print n, x[n], y[n], h1"h",m1"m",s1"s"}}

$ gawk -F"[,=:]" -f f1.awk < f3.txt
tata 3 7 4h 16m 11s
toto 6 9 5h 9m 9s
titi 5 3 2h 7m 50s
0
kimojo Messages postés 402 Statut Membre 41
 
Merci bien ça marche super bien.
Je te remercie pour tout le temps que tu as passé.
0
kimojo Messages postés 402 Statut Membre 41
 
J'ai testé en retirant : sub("h","",$10); sub("m", "", $11);sub("s","",$12);

Pour n'avoir que ça :
{x[$4]+=$8; y[$4]+=$14; h[$4]+=$10;m[$4]+=$11;s[$4]+=$12} ;
END {for (n in x) { s1=s[n]%60 ; s2=int(s[n]/60); m1=(m[n]+s2)%60;m2=int((m[n]+s2)/60);h1=h[n]+m2;
print n, x[n], y[n], h1"h",m1"m",s1"s"}}

Du coup le sub n'a pas forcément une utilité si ?
0
dubcek Messages postés 18807 Date d'inscription   Statut Contributeur Dernière intervention   5 651
 
effectivement, ça marche, je pense que puisque gawk, à la différence d'un language de programmation, n'a pas des variables typées, il doit virer tout seul les caractères non numériques puisqu'on effectue une opération arithmétique h[$4]+=$10;
0
Précédent
  • 1
  • 2