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

Contribuez Perl Discussion :

[UNILIGNE] Compter le nombre de lignes par "identifiant" dans un fichier


Sujet :

Contribuez Perl

  1. #1
    Membre chevronné

    Homme Profil pro
    Responsable projets techniques
    Inscrit en
    Février 2003
    Messages
    980
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Responsable projets techniques
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Février 2003
    Messages : 980
    Points : 1 894
    Points
    1 894
    Par défaut [UNILIGNE] Compter le nombre de lignes par "identifiant" dans un fichier
    Bonjour à tous,

    ça faisait un bail mais je venais proposer une petite contribution : j'avais besoin de déterminer, dans un fichier type CSV, la répartition des lignes par rapport à une colonne donnée.

    Exemple : soit un fichier genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    blahblah|A|blahblah
    blahblah|B|blahblah
    blahblah|A|blahblah
    Je cherche à avoir :
    Y a ptet plus simple, mais voici une solution en perl (edit suite remarque de Lolo78) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    perl -ne '$a{(split /\|/)[1]}++; END {print qq($_ $a{$_}\n) for (sort {$a <=> $b} keys %a);}'
    Remplacez ce qu'il faut dans le split pour utiliser votre séparateur et modifier le [1] pour utiliser le bon numéro de colonne dans votre fichier (chez moi, la seconde colonne avec un séparateur pipe).
    Remplacez éventuellement le sort (ici du numérique).

    Bonne continuation

  2. #2
    Rédacteur/Modérateur

    Avatar de Lolo78
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mai 2012
    Messages
    3 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 612
    Points : 12 469
    Points
    12 469
    Billets dans le blog
    1
    Par défaut
    Bonjour,
    oui, c'est bien, mais je mettrais personnellement le bloc END après le bloc d'alimentation du hash, cela me paraîtrait plus facilement lisible.

  3. #3
    Membre chevronné

    Homme Profil pro
    Responsable projets techniques
    Inscrit en
    Février 2003
    Messages
    980
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Responsable projets techniques
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Février 2003
    Messages : 980
    Points : 1 894
    Points
    1 894
    Par défaut
    Sans doute, j'avoue que j'ai copié/collé un exemple avec un bloc END ne l'ayant moi même jamais utilisé

Discussions similaires

  1. [PowerShell] Compter le nombre de fois qu'apparaît un chaine dans un fichier
    Par olivierjouanno dans le forum Scripts/Batch
    Réponses: 2
    Dernier message: 16/04/2014, 15h07
  2. [SimpleXML] Compter le nombre de fois ou une balise apparait dans un fichier xml.
    Par Krabbos dans le forum Bibliothèques et frameworks
    Réponses: 7
    Dernier message: 07/06/2011, 12h20
  3. Réponses: 2
    Dernier message: 05/09/2007, 22h10

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