Boucle en Perl
Résolu
wafa_o
Messages postés
109
Date d'inscription
Statut
Membre
Dernière intervention
-
wafa_o Messages postés 109 Date d'inscription Statut Membre Dernière intervention -
wafa_o Messages postés 109 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
J'aimerai faire un traitement sur un fichier en PERL mais j'ai quelques difficultés.
Mon fichier est de la forme :
jjmmaaaa hh:mm Valeur
(On y retrouve des valeurs sur 1 semaine, chaque 1/4 d'heure)
Mon objectif est de sommer les valeurs des 1/4 heures pour avoir la valeur à l'heure.
Exemple :
23122009 00:00 150
23122009 00:15 250
23122009 00:30 350
23122009 00:45 450
24122009 00:00 5000
24122009 00:15 6000
24122009 00:30 4000
24122009 00:45 5000
Je souhaiterai obtenir ==> 23122009 00:00 1200
24122009 00:00 20000
Voilà ce que j'ai fait pour chaque heure
if ($hour =="00" ) {
$Valeur+=$val[2];
}
J'ai un programme immense et j'aimerais l'optimiser. Est ce que quelqu'un a une meilleure solution svp ??
J'avoue que je ne sais pas comment m'y prendre.
J'aimerai faire un traitement sur un fichier en PERL mais j'ai quelques difficultés.
Mon fichier est de la forme :
jjmmaaaa hh:mm Valeur
(On y retrouve des valeurs sur 1 semaine, chaque 1/4 d'heure)
Mon objectif est de sommer les valeurs des 1/4 heures pour avoir la valeur à l'heure.
Exemple :
23122009 00:00 150
23122009 00:15 250
23122009 00:30 350
23122009 00:45 450
24122009 00:00 5000
24122009 00:15 6000
24122009 00:30 4000
24122009 00:45 5000
Je souhaiterai obtenir ==> 23122009 00:00 1200
24122009 00:00 20000
Voilà ce que j'ai fait pour chaque heure
if ($hour =="00" ) {
$Valeur+=$val[2];
}
J'ai un programme immense et j'aimerais l'optimiser. Est ce que quelqu'un a une meilleure solution svp ??
J'avoue que je ne sais pas comment m'y prendre.
A voir également:
- Boucle en Perl
- Mon pc s'allume et s'éteint en boucle ✓ - Forum Matériel & Système
- Vlc lire en boucle ✓ - Forum Lecteurs et supports vidéo
- Xiaomi s'éteint tout seul et se rallume en boucle - Forum Xiaomi
- Pc qui s'allume et s'éteint en boucle - Forum Virus
- Huawei s'allume et s'éteint en boucle - Forum Huawei
3 réponses
Salut,
Script perl
Avec perl en ligne de commande
Avec awk
Script perl
#!/usr/bin/perl use strict;use warnings; my $fic="fic.txt"; open F,"fic.txt" or die "E/S : $fic $!\n"; my %h; while(<F>){ my ($date,$val)=(split /\s+/)[0,2]; $h{$date}+=$val; } print "$_ 00:00 $h{$_}\n" for(sort keys %h); __END__
Avec perl en ligne de commande
perl -wlane '$h{$F[0]}+=$F[2];END{print "$_ 00:00 $h{$_}" for (sort keys %h)}' fic.txt
Avec awk
awk '{x[$1]+=$3}END{for(i in x) print i " 00:00 " x[i]}' fic.txt
Merci lami20j.
En fait je me suis mal exprimée, je voulais la valeur pour chaque heure (à 00h, 1h, 2h...).
J'ai finalement trouvé la réponse grâce à l'une de tes réponses dans un post
https://forums.commentcamarche.net/forum/affich-3741856-perl-tableau-assoc-a-2-dimensions
Merci encore
En fait je me suis mal exprimée, je voulais la valeur pour chaque heure (à 00h, 1h, 2h...).
J'ai finalement trouvé la réponse grâce à l'une de tes réponses dans un post
https://forums.commentcamarche.net/forum/affich-3741856-perl-tableau-assoc-a-2-dimensions
Merci encore