Additionner éléments deux fichiers différents

Résolu
yann747 Messages postés 128 Statut Membre -  
yann747 Messages postés 128 Statut Membre -
Bonjour,
je voudrais savoir comment peut-on additionner "un à un" des chiffres de deux fichiers différents, les deux fichiers ont exactement la même structure.

un exemple sera sans doute plus parlant :

-----------
Fichier1.txt
-----------

A1 A2 A3 ... An
B1 B2 B3 ... Bn
...
X1 X2 X3 ... Xn

-----------
Fichier 2.txt
-----------

A'1 A'2 A'3 ... A'n
B'1 B'2 B'3 ... B'n
...
X'1 X'2 X'3 ... X'n

------------------------
Fichier final désiré
------------------------

A1+A'1 A2+A'2 A3+A'3 ... An+A'n
B1+B'1 B2+B'2 B3+B'3 ... Bn+B'n
...
X1+X'1 X2+X'2 X3+X'3 ... Xn+X'n

Les fichiers sont relativement conséquents (10 Mo), le séparateur entre chaque nombre(type float) est un espace. Il y a un retour ligne à la fin de chaque ligne.

Merci d'avance de vos réponses.
Yann

2 réponses

  1. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
     
    hello
    $ more a0*
    ::::::::::::::
    a0
    ::::::::::::::
    1 2 3 4 5
    6 7 8 9 10
    11 12 13 14 15
    ::::::::::::::
    a00
    ::::::::::::::
    100 110 120 130 140
    150 160 170 180 190
    200 210 220 230 240
    $
    $ awk 'NR==FNR {t[NR]=$0; next} {for(n=1; n<=NF; n++){split(t[FNR], a); printf $n+a[n] OFS}; print ""}' a0 a00
    101 112 123 134 145
    156 167 178 189 200
    211 222 233 244 255
    $
    2
    1. yann747 Messages postés 128 Statut Membre 2
       
      Merci dubeck pour ta réponse,
      effectivement ça marche :-)
      par contre le résultat s'affiche très lentement (3 secondes entre chaque valeur)
      au vu du nombre de valeurs à traiter ça risque prendre plusieurs jours...
      Si il faut en passer par là...
      En tout cas merci encore pour la réponse ;-)
      0
    2. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
       
      combien de champ par ligne ?
      quel système ?
      0
  2. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
     
    ceci surement plus rapide (le split en dehors de la boucle)
    awk 'BEGIN{while(getline<"fichier1")t[++n]=$0} {split(t[FNR], a); for(n=1; n<=NF; n++)printf $n+a[n] OFS; print""}'  fichier2
    1
    1. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
       
      as-tu essayé ?
      0
    2. yann747 Messages postés 128 Statut Membre 2
       
      Salut,
      ça marche impec, rien à voir au niveau rapidité !
      Opération réussie en quelques secondes,
      merci beaucoup de ton aide ;-)
      0