UNIX / KSH : Comparer deux fichiers plats
Tuio
-
adil.N -
adil.N -
Bonjour,
Sous Unix, je suis en train de réaliser une petite application me permettant de comparer deux fichiers que je lui donne en entrée.
Chaque ligne est de la forme suivante :
date_courante|application|résultat|
Ces fichiers sont des logs réalisés après des exécutions différentes mais avec les mêmes données en entrées (en gros c'est des tests de non regression). Le problème est que la comparaison directe de ces deux fichiers me donne un FALSE en sortie à cause de la date_courante et je ne peux pas supprimer ce "champs" (nécessaire plus tard pour l'archivage).
Ma première solution fonctionnelle était la suivante :
- Remplacer les "champs" variables par * dans les fichiers de référence
- Comparer les fichiers de résultats aux fichiers de référence "champs à champs" (séparé par |) en omettant les "champs" avec un * dans le fichier de référence.
Exemple :
fichier de référence :
*|toto.ksh|OK|
fichier de résultat :
01011900010553|toto.ksh|OK|
On compare les champs 2 et 3 mais pas le champ 1.
Mon problème est de découper mes lignes ainsi :/ J'ai bien pensé à faire un grep mais il ne me donne pas les résultats attendus.
Merci de votre aide.
Sous Unix, je suis en train de réaliser une petite application me permettant de comparer deux fichiers que je lui donne en entrée.
Chaque ligne est de la forme suivante :
date_courante|application|résultat|
Ces fichiers sont des logs réalisés après des exécutions différentes mais avec les mêmes données en entrées (en gros c'est des tests de non regression). Le problème est que la comparaison directe de ces deux fichiers me donne un FALSE en sortie à cause de la date_courante et je ne peux pas supprimer ce "champs" (nécessaire plus tard pour l'archivage).
Ma première solution fonctionnelle était la suivante :
- Remplacer les "champs" variables par * dans les fichiers de référence
- Comparer les fichiers de résultats aux fichiers de référence "champs à champs" (séparé par |) en omettant les "champs" avec un * dans le fichier de référence.
Exemple :
fichier de référence :
*|toto.ksh|OK|
fichier de résultat :
01011900010553|toto.ksh|OK|
On compare les champs 2 et 3 mais pas le champ 1.
Mon problème est de découper mes lignes ainsi :/ J'ai bien pensé à faire un grep mais il ne me donne pas les résultats attendus.
Merci de votre aide.
A voir également:
- UNIX / KSH : Comparer deux fichiers plats
- Fichier executable unix - Forum MacOS
- Formation ibm aix unix ✓ - Forum Linux / Unix
- Comment ouvrir fichier exécutable unix - Forum MacOS
- JPEG formatés en Fichier exécutable Unix - Forum MacOS
- [UNIX] Compatiblité entre IBM AIX et RedHat ✓ - Forum Redhat
2 réponses
Salut,
bon, je connais pas bien, mais il me semble que le découpage ca se fait tres bien avec awk ou sed
man awk
man sed
surtout lorsque tu sépares les champs avec le meme caractère
si tu connaissais ces commandes, ben désolé pour l'intervention sans doute inutile... ;)
Phiphi
bon, je connais pas bien, mais il me semble que le découpage ca se fait tres bien avec awk ou sed
man awk
man sed
surtout lorsque tu sépares les champs avec le meme caractère
si tu connaissais ces commandes, ben désolé pour l'intervention sans doute inutile... ;)
Phiphi
j'ai lu votre demande mais cinserement je suis un debutant pour les Khs et je vous demande de m'aider sur la methode pour cree un fichier et insere les donnees (separe par un pipe|) .
est c'est possible car je travail sur un projet et il faut que j'ouvre les fichiers et lire les donnees pui les stocker dans un autre fichier
est c'est possible car je travail sur un projet et il faut que j'ouvre les fichiers et lire les donnees pui les stocker dans un autre fichier