IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Shell et commandes POSIX Discussion :

Vérifier cohérence entre deux fichiers


Sujet :

Shell et commandes POSIX

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Avril 2013
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2013
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Vérifier cohérence entre deux fichiers
    Bonjour tout le monde,

    Je me tourne vers vous aujourd'hui pour résoudre un soucis que je rencontre avec un serveur HP-UX. Afin de savoir exactement quelles entrées de mon DHCP/DNS sont obsolètes, j'ai créé deux fichiers récupérant les infos de mon dhcpd.conf et de mon hosts et les formatant en IP:nom:MAC pour essayer de détecter des anomalies. A présent je souhaiterais comparer les deux fichiers afin :
    -d'écrire les lignes identiques dans un troisième fichier où je mettrai plus tard pour chaque matériel la date de dernière apparition sur le réseau
    -d'écrire les lignes qui diffèrent dans un quatrième fichier d'erreur

    J'ai pu isoler les commandes comm et diff pour le moment, comm me plaisant moins vu qu'il efface les lignes des fichiers sources mais je ne vois guère trop comment exploiter correctement les résultats du diff et surtout comment écrire les lignes similaires ailleurs. Auriez-vous des idées/conseils/suggestions à me soumettre là dessus ?

    En vous remerciant par avance, cordialement.

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 080
    Points : 30 805
    Points
    30 805
    Par défaut
    En complément de comm, tu peux aussi regarder join.
    [...]comm me plaisant moins vu qu'il efface les lignes des fichiers sources
    As-tu vérifié ce que tu avances ?
    A ma connaissance, comm se contente d'afficher les différences. S'il efface des lignes, c'est seulement dans sa sortie, pas sur la source.
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  3. #3
    Expert éminent sénior Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 286
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 286
    Points : 12 743
    Points
    12 743
    Par défaut
    Bonjour,

    Pour ce genre de comparaison, soit pour les puriste, on fait ça en awk, soit quand c'est du jetable, on peut le faire via les commandes sort et uniq.
    exemple:
    Lignes présentes dans le fichier 2 uniquement:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    sort -u fichier1 >fichier1.tmp 
    sort -u fichier2 >fichier2.tmp
    sort fichier1.tmp fichier1.tmp fichier2.tmp | uniq -u
    Lignes présentes dans le fichier 1 uniquement:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    sort -u fichier1 >fichier1.tmp 
    sort -u fichier2 >fichier2.tmp
    sort fichier1.tmp fichier2.tmp fichier2.tmp | uniq -u
    Lignes à la fois dans le fichier1 et dans le fichier2:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    sort -u fichier1 >fichier1.tmp 
    sort -u fichier2 >fichier2.tmp
    sort fichier1.tmp fichier2.tmp | uniq -d
    Cordialement.

  4. #4
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Avril 2013
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2013
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    Concernant comm, c'était en effet une mauvaise utilisation des paramètres qui effaçait les fichiers sources, une erreur totalement stupide.

    Au vu de ce qui a été dit, je vais me réorienter vers ma première idée qui était de passer par awk ce qui m'éviterait de devoir trier les fichiers (ils sont ordonnés d'une certaine manière et garder cet ordre sur le final serait un plus).

    Je laisse pour le moment le topic ouvert histoire de poser d'éventuelles questions supplémentaires et surtout de d'expliquer le résultat final dès fois que cela puisse servir.

Discussions similaires

  1. Réponses: 9
    Dernier message: 12/07/2011, 17h25
  2. Outils sur les différences entre deux fichiers XML
    Par Community Management dans le forum XML/XSL et SOAP
    Réponses: 19
    Dernier message: 21/07/2008, 15h21
  3. Différence entre deux fichiers
    Par Celelibi dans le forum Langage
    Réponses: 4
    Dernier message: 26/04/2006, 17h36
  4. [EXCEL] difference entre deux fichiers
    Par Mokhtar BEN MESSAOUD dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 19/01/2006, 11h12
  5. [langage] Passage d objet entre deux fichiers
    Par Slippers dans le forum Langage
    Réponses: 2
    Dernier message: 28/04/2005, 14h45

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo