comparaison de 2 fichiers - Perl - Programmation
Marsh Posté le 22-10-2015 à 18:55:08
Je ne peux parler que pour moi: Désolé, mais on ne fait pas ton boulot à ta place... gilou t'a fait plus d'un script déjà, à un moment faudra bien y arriver tout seul. En plus tes explications ne sont pas forcément claires. Pour le problème présent je n'ai pas regardé en détail mais ça n'a pas l'air magique, soit tu prends un module tout fait pour le csv (il y en a certainement), soit tu fais à la main avec du split() et/ou du Regex. Une fois que tu as tes données en mémoire (avec une structure convenable) les comparaisons diverses ne devraient pas poser de problème. Fais donc le début et propose nous un code à améliorer/corriger!
Marsh Posté le 22-10-2015 à 20:03:28
je l'avou Gilou m'a beaucoup aide, pour cela je le remerci infiniment, je ne suis pas un etre ingrat,
bon je publie ce que j'ai car il ne fontionne pas du tout.
par ailleur si quelque chose n'est pas clair je peu me reexpliquer
Marsh Posté le 22-10-2015 à 23:35:01
Bon, j'ai pondu un truc vite fait:
Code :
|
Avec tes données, ça m'imprime à la console ceci:
----ame_f---- |
A priori, il devrait bien tourner, mais c'est sans garantie, je te laisse le soin de l'adapter à tes besoins et de corriger les erreurs s'il y en a.
Au niveau de la ligne 118, tu peux rajouter ceci:
use Data::Dumper;
print Dumper($param), "\n\n", Dumper($data), "\n";
si tu veux visualiser à la console les structures des (références à des) hash en sortie du parsing des fichiers.
A+,
Marsh Posté le 24-10-2015 à 11:55:06
grand Merci bien Gilou,
je vois a l'instant ta Proposition je vais devoir pouvoir modifier si le faut tres grand merci.
je vais me permettre de pouvoir de damnder si il ya des lignes donc je ne comprend pas.
a+
Marsh Posté le 09-11-2015 à 22:49:29
Henri772 a écrit : grand Merci bien Gilou, |
Salut Gilou
comme je disais une fois j'ai quelque questions concerne le script, je vais devoir encore te derranger une fois de plus. Merci bien de ton aide.
il est necessaire de traiter les fichiers avec toute ses if-conditions?
ligne
16
24
25
29
32
33
35
36
61
62
85
86
87
88
89
90
91
92
93
94
95
107
113
Marsh Posté le 10-11-2015 à 14:25:51
C'est à cause de la n-ième loi de Murphy informatique:
Quand un fichier doit avoir un format précis, il ne l'aura pas.
Il faut donc en tenir compte et prévoir tous les cas de figure en input, si on ne veut pas que le script fasse des choses inattendues quand il rencontre des situations imprévues.
A+,
Marsh Posté le 20-10-2015 à 22:38:55
Salut a tous j'ai besoin de votre aide je possede 2 fichiers que j'aimerai comparer en voila les fichiers.
-----------------------DATA1.csv-----------------------------
20150616 22:16:09
default,ame_a, ame_m, ame_uc, ame_f, ams_l,affi,
default, , fault, col, fault, fac, 1,
---------------------DATA2.csv-----------------------------------
20150616 22:16:09
true, false, true, false, true, true,
default, ame_a, ame_m, ame_uc, ame_f, ams_l, affi,
true DPA01, fault, fault, fault, fault, fault, 1,
false DPA02, , n_5, , , fault, 1,
false DPA03, fault, fault, olt, col, fault, 1,
false DPA04, fault, at, fault, 2, fault, 1,
Le script doit comparer les valeurs des paramètres de DATA1.csv avec les valeurs des paramètres de DATA2.csv , et écrire les résultats dans un fichier.
comme premier paramètre de DATA1.csv nous ame_a ce qui a les valeurs vide, puis le script va dans DATA2.csv regarde la colonne avec pour paramètre de nom ame_a si au dessus du paramètre il ya "true", le script s'arrete ,
va au paramètre suivant dans DATA1.csv savoir ame_m ce qui a de la valeur "fault" va ensuit dans le DATA2.csv recherches la colonne avec le paramètre de nom ame_m, ce paramètre a "false" en dessus ca veut dire cette colonne doit etre examine, celui si consiste a retrouver tous les noms des systemes donc les valeurs de parametre serons different de "fault", dans ce cas, serait
ame_m: fault
DPA02: N_5
DPA04: at
procède ensuite au troisième paramètre dans DATA1.csv avec pour nom ame_uc , celui ci a la valeur de "col", puis va dans DATA2.csv ce paramètre est marque en dessus avec "true", ca veut dire que la colenne ne doit pas d'être vérifié.
puis aller au quatrième paramètre dans DATA1.csv celui ci a pour nom ame_f avec les valeurs "fault" passe ensuite au DATA2.csv cherches la colonne avec pour paramètre ame_f, en dessus la paramater est marque "false", cette colonne doit etre vérifié , puis comme je l'ai déjà explique plus haut , il me donne le nom des systèmes donc les valeurs ne sont pas «fault», dans le cas precis ce sera
sont, dans ce cas, serait
ame_f: fault
DPA02:
DPA03: col
DPA04: 2
donc pour ce cas le script devrai me retourner juste 2 fichiers de sortie
------ame_m-----------------
ame_m: fault
DPA02: N_5
DPA04: at
------ame_f------------------
ame_f: fault
DPA02:
DPA03: col
DPA04: 2