AWK: additionner certains champs des lignes d'un fichier dont

Résolu
bob737 Messages postés 157 Statut Membre -  
bob737 Messages postés 157 Statut Membre -
le deuxième champ est identique.

Bonjour,

Exemple :
VAR1;TOTO;5;10;15
VAR1; TOTO;10;20;30

==> VAR1;TOTO;15;30;45

Merci. ;-)

2 réponses

  1. bob737 Messages postés 157 Statut Membre
     
    awk 'BEGIN {FS=OFS=","} {a[$2]=a[$2]; SUM1+=$3; SUM2+=$4; SUM3+=$5} END { print SUM1, SUM2, SUM3}' test

    j'avance mais ma condition ne marche pas....
    0
  2. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
     
    hello
    $ cat fichier
    VAR2;TATA;1;20;25
    VAR2; TATA;10;20;30
    VAR1;TOTO;5;10;15
    VAR1; TOTO;10;20;30
    $ awk -F " *; *" -v OFS=";" '{t[$2]=$1; t1[$2]+=$3; t2[$2]+=$4; t3[$2]+=$5} END {for(n in t)print t[n], n, t1[n], t2[n], t3[n]}' fichier
    VAR2;TATA;11;40;55
    VAR1;TOTO;15;30;45
    0
    1. bob737 Messages postés 157 Statut Membre
       
      cooool merci.

      je n'ai pas d'espace dans mes champs et 8 champs sur chaque ligne soit
      awk 'BEGIN {FS=OFS=","} {t[$2]=$1; t1[$2]+=$3; t2[$2]+=$4; t3[$2]+=$5; t4[$2]+=$6; t5[$2]+=$7; t6[$2]+=$8} END {for(n in t)print t[n], n, t1[n], t2[n], t3[n], t4[n], t5[n], t6[n]}' tmp_flux.csv

      Par contre, l'addition de certaine valeur du champ 5 donne:
      6.18188e+09 au lieu de 6181884397. Y a-t-il moyen de garder la mise en forme?
      0
    2. bob737 Messages postés 157 Statut Membre
       
      ça semble régler le pb:
      awk 'BEGIN {FS=OFS=","; OFMT="%.13g"} {t[$2]=$1; t1[$2]+=$3; t2[$2]+=$4; t3[$2]+=$5; t4[$2]+=$6; t5[$2]+=$7; t6[$2]+=$8} END {for(n
      in t)print t[n], n, t1[n], t2[n], t3[n], t4[n], t5[n], t6[n]}' tmp_flux.csv | sort -t,
      0