Bonjour,
Je souhaiterai obtenir vos lumières pour le problème suivant.
J'ai deux conf, appartenant à deux équipements, que je dois comparer. Il y a une conf de référence "c1" et la conf à comparer avec la référence "c2". Le but de cette comparaison est de trouver le delta entre ces deux fichiers afin d'adapter "c2" afin d'être en adéquation avec "c1".
Jusque la aucun problème, j'arrive à comparer les deux confs et à savoir où sont les différences.
C'est là que je coince ! Prenons un exemple, j'ai 79 différences entre les deux fichiers de conf. Parmi ces 79 différences, une 40aine sont des différences qui ne sont pas des erreurs (exemple : Hostname, date quelconque etc etc). Est ce que vous auriez une idée afin de scinder facilement les erreurs et les différences ?
La seule idée que j'ai actuellement est de faire des regex pour chaque type potentiel d'erreur mais ça risque de prendre bien trop de temps tout en étant pas certain que ça marche...
Voici mon code de comparaison :
Merci d'avance !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44 my $fichierReference = "f1.txt"; my $fichierVerif = "f2.txt"; my $fichierResultat; my $line1; my $line2; my @contenu1; my @contenu2; my $cpt_diff = 0; ################################################### # # # Programme # # # ################################################### ################################################## # Ouverture des deux fichiers à comparer # ################################################## open(FILER,$fichierReference); open(FILEV,$fichierVerif); open(FILEC,">resultat_comparaison.txt") or die ("Erreur d'ouverture du fichier\n"); #################################### # Comparaison des fichiers # #################################### while(defined($line1 = <FILER>) && defined($line2 = <FILEV>)) { if ($line1 eq $line2) { print FILEC "Ligne $. : C'est bon !\n"; } else { print FILEC "Ligne $. : Il y a une différence !\n"; $cpt_diff++; } } print FILEC "Le delta de différence est de $cpt_diff\n";
Partager