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

Langage Perl Discussion :

Aggreger les valeurs des lignes ayant des champs identiques dans un fichier


Sujet :

Langage Perl

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    87
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 87
    Points : 70
    Points
    70
    Par défaut Aggreger les valeurs des lignes ayant des champs identiques dans un fichier
    Bonjour,

    Soit le fichier FIC de contenu:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    P1:A:TOTO:VAL1:62
    P1:A:TOTO:VAL1:56
    P1:A:TOTO:VAL2:5
    P1:B:TOTO:VAL2:4
    P1:A:TITI:VAL1:62
    P2:A:TOTO:VAL2:59
    P1:B:TITI:VAL6:5
    P2:A:TOTO:VAL1:9
    P2:B:BLABLA:VAL4:5
    P2:B:TOTO:VAL2:61
    P2:B:BLABLA:VAL4:51
    Je souhaite pourvoir aggréger les lignes du fichier suivant les champs 2,3 et 4. Le séparateur étant Ce qui devrait me donner le résultat suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    A:TOTO:VAL1:127
    A:TOTO:VAL2:64
    B:TOTO:VAL2:65
    B:BLABLA:VAL4:56
    A:TITI:VAL1:62
    B:TITI:VAL6:5
    Merci d'avance.

  2. #2
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2012
    Messages : 63
    Points : 75
    Points
    75
    Par défaut
    Alors je viens d'y réfléchir un peu et voilà ce à quoi j'ai pensé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    #!/usr/bin/perl
     
    use strict;
    use warnings;
    use Tie::File;
     
     
    my (@file, @result);
     
    open(IN, "agréger.txt") || die "E/S : $!";
     
    while(<IN>){
    	my $tmp = substr($_, 3);
    	push(@file, $tmp);
    }
     
    while(@file){
     
    	my $line = $file[0];
    	my @line = split(/:/, $line	);
     
    	my $somme = $line[3];
    	shift(@file);
     
    	my $i = 0;
    	foreach (@file){
    		if($_ =~ /$line[0]:$line[1]:$line[2]:(\d+)/){
    			$somme = $somme + $1;
    			splice(@file, $i, 1);
    		}
    	$i++
    	}
     
    	my $newLine = "$line[0]:$line[1]:$line[2]:$somme";	
    	push(@result, $newLine);
     
    }
     
    close(IN);
     
     
    open(OUT, ">outAgregation.txt") || die "E/S : $!";
     
    foreach (@result){
    		print OUT $_."\n";	
    }
     
    close(OUT);

    Dit moi si c'est bien ce qu'il te faut. Si tu ne comprend pas quelques trucs n'hésite pas.

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    87
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 87
    Points : 70
    Points
    70
    Par défaut
    Merci Quantactique et désolé pour le retard.
    Je teste voir.

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    87
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 87
    Points : 70
    Points
    70
    Par défaut
    Merci!

  5. #5
    Candidat au Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2012
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2012
    Messages : 6
    Points : 4
    Points
    4
    Par défaut Débutant perl
    C'est quoi $Param{Value}?

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 18/06/2010, 13h50
  2. Réponses: 2
    Dernier message: 18/02/2009, 23h44
  3. Réponses: 8
    Dernier message: 29/04/2008, 13h58
  4. Champs identiques dans 2 fichiers
    Par dicus dans le forum AS/400
    Réponses: 20
    Dernier message: 14/02/2008, 16h26
  5. Traitement des lignes [suppression des lignes vides]
    Par turbo_chess dans le forum Linux
    Réponses: 4
    Dernier message: 22/03/2007, 09h16

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