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

Scripts/Batch Discussion :

Comparaison de caractere ou mot dans deux fichiers txt en powershell


Sujet :

Scripts/Batch

  1. #1
    Candidat au Club
    Homme Profil pro
    Analyste d'exploitation
    Inscrit en
    Juillet 2015
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Analyste d'exploitation

    Informations forums :
    Inscription : Juillet 2015
    Messages : 2
    Points : 2
    Points
    2
    Par défaut Comparaison de caractere ou mot dans deux fichiers txt en powershell
    Bonjour,
    Je souhaite créer un powershell pour comparer les données de deux fichiers et pour en extraire que la ou les données identiques à ces deux fichiers.
    Ce sont des fichiers log de batch dans lesquels nous trouvons des erreurs ou des infos et dans lesquels une donnée apparait chaque jour dans le log.
    En voici un extrait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    18-05-2015 02:59:44.968 INFO   - useModeleNameInFileName : null
    18-05-2015 02:59:44.968 INFO   - nbEdition : null
    18-05-2015 03:00:44.124 INFO   - Elément non traité : CLAVIER KARL
    18-05-2015 03:00:44.452 ERROR  - Aucune situation d’’objet de risque n’’a été trouvée. Chargement impossible.
    18-05-2015 03:01:36.463 INFO   - ====================================
    18-05-2015 03:01:36.463 INFO   - = Informations techniques : WARN_ERRORS (code V9R = 2)
    18-05-2015 03:01:36.463 INFO   - = Traitement exécuté avec des erreurs.
    18-05-2015 03:01:36.463 INFO   - = Eléments sélectionnés : 122
    18-05-2015 03:01:36.463 INFO   - = Eléments traités : 121
    18-05-2015 03:01:36.463 INFO   - ====================================
    Dans l'exemple ci dessus, nous avons tous les jours le nom CLAVIER KARL qui revient. Donc mon but c'est de comparer tous les jours le log du jour avec celui de la veille et d'en extraire les données identiques comme le nom CLAVIER KARL par exemple pour en faire un delta.
    Voici ma commande simple que j'ai pu trouver pour le moment mais je n'arrive pas plus à avancer surtout pour la partie recherche de caractère.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    compare-object -referenceobject $(get-content "mon 1er fichier") -differenceobject $(get-content "mon 2nd fichier")
    En vous remerciant pour votre aide

  2. #2
    Membre habitué
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juillet 2015
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juillet 2015
    Messages : 66
    Points : 126
    Points
    126
    Par défaut
    Voici un exemple, la seule différence est d'utiliser les switchs -ExcludeDifferent et -IncludeEqual, ceci permet de n'avoir que les lignes identiques.
    Ensuite on ne garde que la donnée sans les indicateurs "<=", etc en ne sélectionnant que la propriété InputObject de chaque élément dans l'array retournée.

    Finalement pour faire une recherche de caractère on peut s'appuyer sur Select-String mais aussi avec -match, -like, etc, il y a pas mal de possibilités

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    $jour = $psscriptroot+"\1.log"
    $veille = $psscriptroot+"\2.log"
    
    $identique = compare-object -includeequal -ExcludeDifferent -referenceobject $(get-content $jour) -differenceobject $(get-content $veille) | % {$_.inputobject} 
    
    $identique
    
    #recherche de caractère
    $identique | Select-string -AllMatches KARL
    J'ai modifié une ligne dans l'extrait de log (celle concernant les éléments traités) et ça donne ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    18-05-2015 02:59:44.968 INFO - useModeleNameInFileName : null
    18-05-2015 02:59:44.968 INFO - nbEdition : null
    18-05-2015 03:00:44.124 INFO - Elément non traité : CLAVIER KARL
    18-05-2015 03:00:44.452 ERROR - Aucune situation d’’objet de risque n’’a été trouvée. Chargement impossible.
    18-05-2015 03:01:36.463 INFO - ====================================
    18-05-2015 03:01:36.463 INFO - = Informations techniques : WARN_ERRORS (code V9R = 2)
    18-05-2015 03:01:36.463 INFO - = Traitement exécuté avec des erreurs.
    18-05-2015 03:01:36.463 INFO - = Eléments sélectionnés : 122
    18-05-2015 03:01:36.463 INFO - ====================================
    La recherche de caractères (j'ai cherché KARL) donne ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    18-05-2015 03:00:44.124 INFO - Elément non traité : CLAVIER KARL

  3. #3
    Candidat au Club
    Homme Profil pro
    Analyste d'exploitation
    Inscrit en
    Juillet 2015
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Analyste d'exploitation

    Informations forums :
    Inscription : Juillet 2015
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    Super merci beaucoup.
    Je vais tester ca.

    @+

Discussions similaires

  1. Déterminer le nombre de mots dans deux fichiers de texte
    Par daniel1985 dans le forum Général Java
    Réponses: 1
    Dernier message: 14/12/2012, 11h51
  2. [batch] Comment rechercher deux mots dans un fichier .txt ?
    Par koKoTis dans le forum FAQs Windows
    Réponses: 0
    Dernier message: 10/02/2009, 17h54
  3. detecter une ligne a un seul mot dans un fichier txt
    Par malikoo dans le forum Général Python
    Réponses: 9
    Dernier message: 04/07/2007, 19h43
  4. récupérer un mot dans un fichier txt
    Par thedevil dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 21/05/2007, 14h59
  5. Remplaçer un mot dans un fichier Txt
    Par walid_kerkoub dans le forum Delphi
    Réponses: 5
    Dernier message: 06/03/2007, 11h37

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