Additionner éléments deux fichiers différents [Résolu/Fermé]

Signaler
Messages postés
126
Date d'inscription
mardi 25 octobre 2011
Statut
Membre
Dernière intervention
20 octobre 2017
-
yann747
Messages postés
126
Date d'inscription
mardi 25 octobre 2011
Statut
Membre
Dernière intervention
20 octobre 2017
-
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

Messages postés
18139
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
6 avril 2020
4 728
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
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 78394 internautes nous ont dit merci ce mois-ci

yann747
Messages postés
126
Date d'inscription
mardi 25 octobre 2011
Statut
Membre
Dernière intervention
20 octobre 2017
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 ;-)
dubcek
Messages postés
18139
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
6 avril 2020
4 728
combien de champ par ligne ?
quel système ?
Messages postés
18139
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
6 avril 2020
4 728
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
dubcek
Messages postés
18139
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
6 avril 2020
4 728
as-tu essayé ?
yann747
Messages postés
126
Date d'inscription
mardi 25 octobre 2011
Statut
Membre
Dernière intervention
20 octobre 2017
2
Salut,
ça marche impec, rien à voir au niveau rapidité !
Opération réussie en quelques secondes,
merci beaucoup de ton aide ;-)