Somme des champs de plusieurs lignes

Résolu
GHISLINO Messages postés 214 Date d'inscription   Statut Membre Dernière intervention   -  
GHISLINO Messages postés 214 Date d'inscription   Statut Membre Dernière intervention   -
bonjour
je veux faire avec AWK ou NAWK la somme des champs 6 et 7 des lignes contenants le même champ 2 pour avoir en sortie le fichier2
et aussi supprimer les lignes dont les champs 6 et 7 sont égal à zéro.
Fichier 1

e_gsm;AKROU;evolium:monoStandardBtsIndoor;BSCDABOU;MBI5 ;2;2
e_gsm;AKROU;evolium:monoStandardBtsIndoor;BSCDABOU;MBI5 ;2;2
e_gsm;AKWABA_1;evolium:monoStandardBtsIndoor;BSCLUM6;MBI5 ;2;2
e_gsm;AKWABA_1;evolium:monoStandardBtsIndoor;BSCLUM6;MBI5 ;2;2
e_gsm;AKWABA_1;evolium:monoStandardBtsIndoor;BSCLUM6;MBI5 ;2;2
e_gsm;ANADA_KOUADIOKRO_1;evolium:monoStandardBtsIndoor;BSCBKE2;MBI3 ;2;2
e_gsm;ANADA_KOUADIOKRO_1;evolium:monoStandardBtsIndoor;BSCBKE2;MBI3 ;2;2
e_gsm;ANADA_KOUADIOKRO_1;evolium:monoStandardBtsIndoor;BSCBKE2;MBI3 ;2;2
e_gsm;AMERICAIN_1;evolium:undefined;;;0;0
e_gsm;AMERICAIN_1;evolium:undefined;;;0;0
e_gsm;AMERICAIN_1;evolium:undefined;;;0;0

Fichier2

e_gsm;AKROU;evolium:monoStandardBtsIndoor;BSCDABOU;MBI5 ;4;4
e_gsm;AKWABA_1;evolium:monoStandardBtsIndoor;BSCLUM6;MBI5 ;6;6
e_gsm;ANADA_KOUADIOKRO_1;evolium:monoStandardBtsIndoor;BSCBKE2;MBI3 ;6;6

Merci d'avance

cdlt.

3 réponses

  1. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
     
    hello
    l'ordre a changé, est-ce un problème ?
    $ nawk 'BEGIN {FS=OFS=";"} $6==0 && $7==0 {next} {t[$2]=$0; t6[$2]+=$6; t7[$2]+=$7} END {for(n in t){$0=t[n]; $6=t6[n]; $7=t7[n]; print}}' fichier1
    e_gsm;ANADA_KOUADIOKRO_1;evolium:monoStandardBtsIndoor;BSCBKE2;MBI3 ;6;6
    e_gsm;AKROU;evolium:monoStandardBtsIndoor;BSCDABOU;MBI5 ;4;4
    e_gsm;AKWABA_1;evolium:monoStandardBtsIndoor;BSCLUM6;MBI5 ;6;6
    $  
    
    0
  2. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
     
    plus court
    nawk 'BEGIN {FS=OFS=";"} $6 || $7 {t[$2]=$0; t6[$2]+=$6; t7[$2]+=$7} END {for(n in t){$0=t[n]; $6=t6[n]; $7=t7[n]; print}}' fichier1
    0
  3. GHISLINO Messages postés 214 Date d'inscription   Statut Membre Dernière intervention  
     
    bonjour Dubcek

    Mille fois merci pour ton aide.
    ça marche très bien les deux codes

    cdlt
    0