Additionner éléments deux fichiers différents

Résolu/Fermé
yann747 Messages postés 127 Date d'inscription mardi 25 octobre 2011 Statut Membre Dernière intervention 13 octobre 2021 - 17 sept. 2013 à 12:16
yann747 Messages postés 127 Date d'inscription mardi 25 octobre 2011 Statut Membre Dernière intervention 13 octobre 2021 - 18 sept. 2013 à 12:31
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
A voir également:

2 réponses

dubcek Messages postés 18755 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 14 novembre 2024 5 621
Modifié par dubcek le 17/09/2013 à 13:05
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
yann747 Messages postés 127 Date d'inscription mardi 25 octobre 2011 Statut Membre Dernière intervention 13 octobre 2021 2
17 sept. 2013 à 13:53
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
dubcek Messages postés 18755 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 14 novembre 2024 5 621
Modifié par dubcek le 17/09/2013 à 14:22
combien de champ par ligne ?
quel système ?
0
dubcek Messages postés 18755 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 14 novembre 2024 5 621
Modifié par dubcek le 17/09/2013 à 14:58
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
dubcek Messages postés 18755 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 14 novembre 2024 5 621
18 sept. 2013 à 08:56
as-tu essayé ?
0
yann747 Messages postés 127 Date d'inscription mardi 25 octobre 2011 Statut Membre Dernière intervention 13 octobre 2021 2
18 sept. 2013 à 12:31
Salut,
ça marche impec, rien à voir au niveau rapidité !
Opération réussie en quelques secondes,
merci beaucoup de ton aide ;-)
0