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 :

Compter les lignes identiques d'un fichier texte avec PowerShell [PowerShell]


Sujet :

Scripts/Batch

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Mars 2015
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Mars 2015
    Messages : 52
    Points : 29
    Points
    29
    Par défaut Compter les lignes identiques d'un fichier texte avec PowerShell
    Bonjour,

    Je souhaite compter et afficher le nombre de lignes identiques d'un fichier texte:

    Le fichier texte en test qu'on appellera toto.txt:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    ligne une
    ligne deux
    ligne cent deux
    ligne trois
    ligne une
    ligne cent
    ligne quatre
    ligne une
    Ligne deux
    Et je souhaite avoir le résultat dans le fichier titi.csv sous la forme suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    ligne une;3
    ligne deux;2
    ligne cent deux;1
    ligne trois;1
    ligne une;3
    ligne cent;1
    ligne quatre;1
    ligne une;3
    ligne deux;2
    J'imagine qu'il faut parcourir le fichier ligne par ligne en comptant le nombre d'occurence de la ligne en cours au fichier complet pour ça je pense qu'il faut utilser un ForEach:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    ForEach($Ligne in Get-Content 'c:\temp\toto.csv')
    {
    
        ######
        ...
        Action qui compte le nombre d occurences de ligne en cours $Ligne dans le fichier toto.txt et met le résultat dans la variable $NbOcc
        ...
        ######
    
        Add-Content -Path 'c:\temp\titi.csv' -Value "$Ligne ; $NbOcc"
    }
    Mais je bloque sur l'action de comptage.
    Il faut peut être s'y prendre autrement...

    Pouvez-vous m'aider s'il vous plaît ?

    Merci

  2. #2
    Expert confirmé

    Homme Profil pro
    Responsable déploiement (SCCM, InTune, GPO)
    Inscrit en
    Juillet 2014
    Messages
    3 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Responsable déploiement (SCCM, InTune, GPO)
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2014
    Messages : 3 184
    Points : 5 755
    Points
    5 755
    Par défaut
    Dans ton exemple il y a un petit vice sur la casse, je sais pas si c'est normal et comment cela doit être interprété/géré

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    ligne une
    ligne deux
    ligne cent deux
    ligne trois
    ligne une
    ligne cent
    ligne quatre
    ligne une
    Ligne deux
    Code powershell : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $content = Get-Content -LiteralPath "toto.txt"
    $hash = $content | Group-Object -AsHashTable -AsString
    $content | ForEach-Object {"$($_),$($hash[$_].Count)"} | Set-Content -LiteralPath "titi.csv"

    Ou ceci qui respecte ta sortie, a voir...
    Code powershell : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $content = Get-Content -LiteralPath "toto.txt"
    $hash = $content | Group-Object -AsHashTable -AsString
    $content | ForEach-Object {"$($hash[$_][0]),$($hash[$_].Count)"} | Set-Content -LiteralPath "titi.csv"

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Mars 2015
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Mars 2015
    Messages : 52
    Points : 29
    Points
    29
    Par défaut
    Merci beaucoup, ça fonctionne parfaiment.

    Et effectivement pour la majuscule, c'était un faute de frappe de ma part, désolé pour les recherches en plus du coup...

    Encore merci pour votre aide efficace et rapide.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Gestion de fichiers] Lister les lignes identiques entre deux fichiers
    Par |Psk| dans le forum Utilitaires et Sécurités
    Réponses: 0
    Dernier message: 11/02/2015, 09h09
  2. [LV2009] Supprimer les lignes vides dans un fichier texte
    Par Super2006 dans le forum LabVIEW
    Réponses: 3
    Dernier message: 11/11/2011, 14h32
  3. [MySQL] ecriture de tous les lignes sql dans un fichier texte
    Par noche29 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 16/03/2011, 15h29
  4. Réponses: 2
    Dernier message: 28/11/2010, 15h15
  5. Réponses: 6
    Dernier message: 30/10/2009, 16h13

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