PERL _ Recuperer valeur maxi dune colonne
Résolu
rikki
-
lami20j Messages postés 21331 Date d'inscription Statut Modérateur, Contributeur sécurité Dernière intervention -
lami20j Messages postés 21331 Date d'inscription Statut Modérateur, Contributeur sécurité Dernière intervention -
Bonjour,
Voila, j'ai tlechargé PERl, aussi je debute .J'ai regardé des tutos , mais je ne m'en sors pas...merci pour votre aide.
Auparavant je faisais un calcul via excel, mais vu le nrbre de lignes + de 100 000 lignes , c'est bp trop lent.
J'ai un fichier texte qui a cette forme nomme toto.txt
EUR 1.2315
EUR 1.2318
EUR 1.2356
Je cherche a recuperer la valeur maxi de la deuxieme colonne
soit ici la valeur 1.2356. Mon fichier de sortie sortie.txt ne devra donc contenir qu'une seule ligne , celle de la valeur max
EUR 1.2356
Cetait mon premier probleme.car je nage un peu pour y arriver..
Deuxieme probleme
J'ai un fichier toto2.txt valeur qui a cette forme
EUR 1.2350 1.2310
EUR 1.2370 1.2320
et je cherche a recuperer la valeur moyenne de la colonne 2 + colonne 3
Soit ici 1,2330 pour la 1ere ligne ...etc.. avec donc un fichier texte de sortie sortie2.txt
EUR 1.2330
EUR 1.2345
Merci pour votre aide, car c'est un peu trop dur pour mes competences ^^
Voila, j'ai tlechargé PERl, aussi je debute .J'ai regardé des tutos , mais je ne m'en sors pas...merci pour votre aide.
Auparavant je faisais un calcul via excel, mais vu le nrbre de lignes + de 100 000 lignes , c'est bp trop lent.
J'ai un fichier texte qui a cette forme nomme toto.txt
EUR 1.2315
EUR 1.2318
EUR 1.2356
Je cherche a recuperer la valeur maxi de la deuxieme colonne
soit ici la valeur 1.2356. Mon fichier de sortie sortie.txt ne devra donc contenir qu'une seule ligne , celle de la valeur max
EUR 1.2356
Cetait mon premier probleme.car je nage un peu pour y arriver..
Deuxieme probleme
J'ai un fichier toto2.txt valeur qui a cette forme
EUR 1.2350 1.2310
EUR 1.2370 1.2320
et je cherche a recuperer la valeur moyenne de la colonne 2 + colonne 3
Soit ici 1,2330 pour la 1ere ligne ...etc.. avec donc un fichier texte de sortie sortie2.txt
EUR 1.2330
EUR 1.2345
Merci pour votre aide, car c'est un peu trop dur pour mes competences ^^
A voir également:
- PERL _ Recuperer valeur maxi dune colonne
- Déplacer colonne excel - Guide
- Recuperer message whatsapp supprimé - Guide
- Trier colonne excel - Guide
- Colonne word - Guide
- Formule somme excel colonne - Guide
9 réponses
Salut,
1ère partie
1ère partie
root@debian:~# cat max.pl #!/usr/bin/perl # open LIRE,"a.txt" or die "E/S : $!\n"; open ECRIRE,">sortie.txt" or die "E/S : $!\n"; $max = 0; while (<LIRE>){ /(.*)\s+(\d.*)/; $max = $2 if $2 > $max; } print ECRIRE "EUR $max\n"; __END__ root@debian:~# cat a.txt EUR 1.2315 EUR 1.2318 EUR 1.2356 root@debian:~# perl max.pl root@debian:~# cat sortie.txt EUR 1.2356 root@debian:~#
Merci bp pour ton aide lami20..
Effectivement c'est bien au dessus de mes competences.. ! hihi..
cela faisait deux jours que je galerais dessus.
^^
Je vais tester ca ce soir , sur mon pc, des que je rentre !
et pouvoir me debarasser de ce maudit excel qui met des heures a ouvrir des importations de grands fichiers..
merci :-)
si tu as une idee pour le deuxieme je suis preneur de ton aide.
eric.
Effectivement c'est bien au dessus de mes competences.. ! hihi..
cela faisait deux jours que je galerais dessus.
^^
Je vais tester ca ce soir , sur mon pc, des que je rentre !
et pouvoir me debarasser de ce maudit excel qui met des heures a ouvrir des importations de grands fichiers..
merci :-)
si tu as une idee pour le deuxieme je suis preneur de ton aide.
eric.
Re,
la 2ème partie
la 2ème partie
root@debian:~# cat moyenne.pl #!/usr/bin/perl # open LIRE,"b.txt" or die "E/S : $!\n"; open ECRIRE,">sortie2.txt" or die "E/S : $!\n"; while (<LIRE>){ @t = $_ =~ /(\S+)/g; shift @t; printf ECRIRE "EUR %.4f\n",(eval (join "+",@t) / scalar @t); } __END__ root@debian:~# cat b.txt EUR 1.2350 1.2310 EUR 1.2370 1.2320 root@debian:~# perl moyenne.pl root@debian:~# cat sortie2.txt EUR 1.2330 EUR 1.2345
et pouvoir me debarasser de ce maudit excel
Alors sache qu'il y a des modules Perl qui te permettent de travailler sur des fichier Excel et d'écrire des fichiers Excel sans avoir besoin de Microsoft.
Pour écrire
Spreadsheet::WriteExcel
Pour lire
Spreadsheet::ParseExcel
A ne pas oublié Openoffice.org
Alors sache qu'il y a des modules Perl qui te permettent de travailler sur des fichier Excel et d'écrire des fichiers Excel sans avoir besoin de Microsoft.
Pour écrire
Spreadsheet::WriteExcel
Pour lire
Spreadsheet::ParseExcel
A ne pas oublié Openoffice.org
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Merci,
Chapeau !
ca marche comme sur des roulettes, chez moi ..
je vais essayer maintenant de comprendre ton script..car j'etais vraiment parti dans une mauvaise direction..
now, je vais essayer d'ajouter quelques elements pour finaliser l'ensemble..
car en fait mon fichier a cette tete
EUR 10.23 10.13
AUD 1.32 1.12
CSZ 12.32 10.14
EUR 18.12 17.50
VOL 14.23 14.10
il faut donc que j'arrive deja a extraire les lignes par exemple toutes les EUR puis ensuite j'applique ton script (moyenne puis max)..
ca je pense y a ariver ..eventuellement , si je n'arrive pas en perl, en passant par script windows ..
cetait mon premier post sur comment ca marche ..
thx lami ..
Pour excel je te remercie pour les liens..
Pour oppenoffice , jai des fichiers excel avec tout plein de macro et d'autres part des addin propres a excel donc open office je laisse un peu de coté..Mon probleme avec excel etait surtout la limitation a 65000 lignes.
Avec le nouveau excel , ils ont fait sauter cette barrriere..
La faire sauter c'est bien ..mais il faut assurer derriere..ce qui n'est pas le cas
Car si tu importes un fichier de 200 000 lignes puis tu as des calculs sur 10 colonnes, l'importation de ce fichier prend au bas mot pres de 5 mn.. Je ne sais pas ce qu'il fait..
eric
Chapeau !
ca marche comme sur des roulettes, chez moi ..
je vais essayer maintenant de comprendre ton script..car j'etais vraiment parti dans une mauvaise direction..
now, je vais essayer d'ajouter quelques elements pour finaliser l'ensemble..
car en fait mon fichier a cette tete
EUR 10.23 10.13
AUD 1.32 1.12
CSZ 12.32 10.14
EUR 18.12 17.50
VOL 14.23 14.10
il faut donc que j'arrive deja a extraire les lignes par exemple toutes les EUR puis ensuite j'applique ton script (moyenne puis max)..
ca je pense y a ariver ..eventuellement , si je n'arrive pas en perl, en passant par script windows ..
cetait mon premier post sur comment ca marche ..
thx lami ..
Pour excel je te remercie pour les liens..
Pour oppenoffice , jai des fichiers excel avec tout plein de macro et d'autres part des addin propres a excel donc open office je laisse un peu de coté..Mon probleme avec excel etait surtout la limitation a 65000 lignes.
Avec le nouveau excel , ils ont fait sauter cette barrriere..
La faire sauter c'est bien ..mais il faut assurer derriere..ce qui n'est pas le cas
Car si tu importes un fichier de 200 000 lignes puis tu as des calculs sur 10 colonnes, l'importation de ce fichier prend au bas mot pres de 5 mn.. Je ne sais pas ce qu'il fait..
eric
Salut,
moyenne
moyenne
lami20j@debian:~/trash$ cat moyenne.pl #!/usr/bin/perl # open LIRE,"b.txt" or die "E/S : $!\n"; open ECRIRE,">sortie2.txt" or die "E/S : $!\n"; while (<LIRE>){ next unless /^EUR/; @t = $_ =~ /(\S+)/g; shift @t; printf ECRIRE "EUR %.4f\n",(eval (join "+",@t) / scalar @t); } __END__ lami20j@debian:~/trash$ cat b.txt EUR 10.23 10.13 AUD 1.32 1.12 CSZ 12.32 10.14 EUR 18.12 17.50 VOL 14.23 14.10 lami20j@debian:~/trash$ perl moyenne.pl lami20j@debian:~/trash$ cat sortie2.txt EUR 10.1800 EUR 17.8100
max
lami20j@debian:~/trash$ cat max.pl #!/usr/bin/perl # open LIRE,"a.txt" or die "E/S : $!\n"; open ECRIRE,">sortie.txt" or die "E/S : $!\n"; $max = 0; while (<LIRE>){ next unless /^EUR/; /(.*)\s+(\d.*)\s+\d.*/; $max = $2 if $2 > $max; } print ECRIRE "EUR $max\n"; __END__ lami20j@debian:~/trash$ cat a.txt EUR 10.23 10.13 AUD 1.32 1.12 CSZ 12.32 10.14 EUR 18.12 17.50 VOL 14.23 14.10 lami20j@debian:~/trash$ perl max.pl lami20j@debian:~/trash$ cat sortie.txt EUR 18.12