Help script perl comparaison de deux fichiers
Profil bloqué
-
Profil bloqué -
Profil bloqué -
Bonjour,
je dois faire un script pour comparer deux fichier et je ne sais pas vraiment comment mi prendre..
fic1 du style
test robert anna jaques cyril
sb001 aa bb cc aa
sb002 aa cc bb uu
sb003 aa uu cc bb
fic 2 du style
test anais roberta jaques nicolas
sb002 aa cc -- uu
sb008 aa cc bb uu
sb009 aa cc bb uu
pour le -- c'est une donnée manquante
en faite je dois comparer les deux fichiers
en gros il doit ressortir un fichier3
comme celui la
test robert anna jaques cyril anais roberta nicolas
sb001 aa bb cc aa -- -- --
sb002 aa cc bb uu aa cc -- uu
sb003 aa uu cc bb -- -- --
sb008 -- -- bb -- aa cc uu
sb009 -- --bb -- aa cc uu
pour resumer le fichier 3
on fusionne les données redondante exemple pour jaques qui est dans les deux fichiers
et on fusionne les données pour les test redondant comme sb002 dans l'exemple
merci si vous avez des pistes pour m'aider je rames...
ouverture de fichier, lecture c'est bon c'est pour la comparaison et l'envoie sur un fichier3
je dois faire un script pour comparer deux fichier et je ne sais pas vraiment comment mi prendre..
fic1 du style
test robert anna jaques cyril
sb001 aa bb cc aa
sb002 aa cc bb uu
sb003 aa uu cc bb
fic 2 du style
test anais roberta jaques nicolas
sb002 aa cc -- uu
sb008 aa cc bb uu
sb009 aa cc bb uu
pour le -- c'est une donnée manquante
en faite je dois comparer les deux fichiers
en gros il doit ressortir un fichier3
comme celui la
test robert anna jaques cyril anais roberta nicolas
sb001 aa bb cc aa -- -- --
sb002 aa cc bb uu aa cc -- uu
sb003 aa uu cc bb -- -- --
sb008 -- -- bb -- aa cc uu
sb009 -- --bb -- aa cc uu
pour resumer le fichier 3
on fusionne les données redondante exemple pour jaques qui est dans les deux fichiers
et on fusionne les données pour les test redondant comme sb002 dans l'exemple
merci si vous avez des pistes pour m'aider je rames...
ouverture de fichier, lecture c'est bon c'est pour la comparaison et l'envoie sur un fichier3
A voir également:
- Help script perl comparaison de deux fichiers
- Script vidéo youtube - Guide
- Comparaison million milliard - Accueil - Technologies
- Nombre de jours entre deux dates excel - Guide
- Deux ecran pc - Guide
- Explorateur de fichiers - Guide
2 réponses
Salut nosuperman,
Voilà des pistes :-)
Avec le premier fichier, tu mets dans un hash les données à partir de la 2ème ligne, avec les données de la colonne 1 ("sb001", etc.) en tant que clef et le reste de la ligne en tant que valeur.
Tu utilises une expression rationnelle telle que celle qui suit pour capturer d'une part les données contenues dans ta 1ère colonne et d'autre part le reste de la ligne.
Avec le 2ème fichier, tu vérifies si la donnée de la 1ère colonne correspond à une clef existante :
- si oui, tu modifies le contenu de la valeur qui lui est affectée en concaténant la valeur existante avec le reste de la ligne nouvellement capturée séparé par un espace ;
- si non, tu crées une nouvelle clef pour la donnée de la 1ère colonne nouvellement capturée avec le reste de la ligne nouvellement capturé en tant que valeur, avec des tirets devant.
Tu fais une itération sur le hash pour vérifier ceux qui n'ont pas été complétés, et tu ajoutes des tirets à la suite. Par exemple, en traitant les valeurs de hash qui ne correspondent pas à l'expression suivante représentant une ligne complétée :
Puis tu affiches ta 1ère ligne et tu fais une itération sur le hash en le triant par ordre alphabétique des clefs, pour afficher clefs et valeurs.
Bon courage.
Dal
Voilà des pistes :-)
Avec le premier fichier, tu mets dans un hash les données à partir de la 2ème ligne, avec les données de la colonne 1 ("sb001", etc.) en tant que clef et le reste de la ligne en tant que valeur.
Tu utilises une expression rationnelle telle que celle qui suit pour capturer d'une part les données contenues dans ta 1ère colonne et d'autre part le reste de la ligne.
(^sb[0-9]+) (.*)$
Avec le 2ème fichier, tu vérifies si la donnée de la 1ère colonne correspond à une clef existante :
- si oui, tu modifies le contenu de la valeur qui lui est affectée en concaténant la valeur existante avec le reste de la ligne nouvellement capturée séparé par un espace ;
- si non, tu crées une nouvelle clef pour la donnée de la 1ère colonne nouvellement capturée avec le reste de la ligne nouvellement capturé en tant que valeur, avec des tirets devant.
Tu fais une itération sur le hash pour vérifier ceux qui n'ont pas été complétés, et tu ajoutes des tirets à la suite. Par exemple, en traitant les valeurs de hash qui ne correspondent pas à l'expression suivante représentant une ligne complétée :
(^sb[0-9]+) (.*) (.*) (.*) (.*) (.*) (.*) (.*)$
Puis tu affiches ta 1ère ligne et tu fais une itération sur le hash en le triant par ordre alphabétique des clefs, pour afficher clefs et valeurs.
Bon courage.
Dal