[perl] Extraire la derniere ligne d'un fichie
Résolu
fxta
-
fxta -
fxta -
Bonjour, je souhaiterai tout simplement extraire la derniere ligne d'un fichier texte sachant que celui ci est de taille variable et que je ne connais aucun mot de la dernière ligne ni de celle d'avant.
J'ai essayé avec la fonction reverse :
Le $line me met bien ma derniere ligne en premier mais je n'arrive pas à extraire uniquement cette ligne.
ps : pour les curieux le fichier est de la forme
mais tres difficile d'utiliser les regex car aucun fichier ne se termine de la meme maniere.
Merci.
J'ai essayé avec la fonction reverse :
open(FENT, '< logwls.txt'); foreach my $line (reverse(<FENT> )) { print $line; } close(FENT);
Le $line me met bien ma derniere ligne en premier mais je n'arrive pas à extraire uniquement cette ligne.
ps : pour les curieux le fichier est de la forme
[info]balbalbalblablabalbalba [info]balbalbalblablabalbalba [info]balbalbalblablabalbalba <2009-17-12 08h14><inbox><listenning on port xxxxxxx> <2009-17-12 11h00><inbox><listenning on port xxxxxxx> <2009-17-12 12h20><inbox><listenning on port xxxxxxx>
mais tres difficile d'utiliser les regex car aucun fichier ne se termine de la meme maniere.
Merci.
A voir également:
- Xxxxxxx2009
- Dernière version ccleaner gratuit français - Télécharger - Nettoyage
- Extraire une video youtube - Guide
- Supprimer dernière page word - Guide
- Partager photos en ligne - Guide
- Extraire le son d'une vidéo - Guide
4 réponses
Re,
Une autre méthode
Une autre méthode
#!/usr/bin/perl use strict;use warnings; open FENT, '< logwls.txt' or die "E/S : $!\n";; chomp(my $derniere = (reverse(<FENT>))[0]); print $derniere,"\n"; close(FENT); __END__
Salut,
Pas besoin des regex ;-)
Pas besoin des regex ;-)
lami20j@debian:~/trash/ccm_perl$ cat logwls.txt info]balbalbalblablabalbalba [info]balbalbalblablabalbalba [info]balbalbalblablabalbalba <2009-17-12 08h14><inbox><listenning on port xxxxxxx> <2009-17-12 11h00><inbox><listenning on port xxxxxxx> <2009-17-12 12h20><inbox><listenning on port xxxxxxx> lami20j@debian:~/trash/ccm_perl$ lami20j@debian:~/trash/ccm_perl$ cat derniereligne.pl #!/usr/bin/perl open FENT, '< logwls.txt' or die "E/S : $!\n";; foreach my $line (reverse(<FENT> )) { print $line and last; # je sors de la boucle après le 1er print } close(FENT); __END__ lami20j@debian:~/trash/ccm_perl$ lami20j@debian:~/trash/ccm_perl$ perl derniereligne.pl <2009-17-12 12h20><inbox><listenning on port xxxxxxx>
Re,
Et pour la récupérer
Exécution
Et pour la récupérer
#!/usr/bin/perl use strict;use warnings; my $derniere; open FENT, '< logwls.txt' or die "E/S : $!\n";; foreach (reverse(<FENT> )) { chomp($derniere=$_) and last; } print $derniere,"\n"; close(FENT); __END__
Exécution
lami20j@debian:~/trash/ccm_perl$ perl derniereligne.pl <2009-17-12 12h20><inbox><listenning on port xxxxxxx>