Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1021 connectés 

  FORUM HardWare.fr
  Programmation
  Perl

  [perl] lire un fichier à l'envers

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[perl] lire un fichier à l'envers

n°1139471
thurfin
la clarté dans la confusion
Posté le 04-07-2005 à 15:33:38  profilanswer
 

Bonjour,
je dois récupérer des informations dans un fichier de log à l'aide d'un script perl. Hors un même log peut être présent plusieurs fois dans ce fichier et seul la dernière entrée m'interesse. C'est pourquoi plutot que de parcourir tout le fichier je voudrais savoir s'il serait possible de parcourir se fichier en partant de la fin.
Merci d'avance.


---------------
De Marx j'ai avant tout retenu la notion de capital
mood
Publicité
Posté le 04-07-2005 à 15:33:38  profilanswer
 

n°1139473
pospos
Posté le 04-07-2005 à 15:36:05  profilanswer
 
n°1139476
manatane
En vous remerciant, bonsoir
Posté le 04-07-2005 à 15:38:48  profilanswer
 

thurfin a écrit :

Bonjour,
je dois récupérer des informations dans un fichier de log à l'aide d'un script perl. Hors un même log peut être présent plusieurs fois dans ce fichier et seul la dernière entrée m'interesse. C'est pourquoi plutot que de parcourir tout le fichier je voudrais savoir s'il serait possible de parcourir se fichier en partant de la fin.
Merci d'avance.


`tac ton_fichier`
mais tu ferais mieux d'utiliser tail ou une fonction équivalente en Perl

n°1139520
thurfin
la clarté dans la confusion
Posté le 04-07-2005 à 16:16:31  profilanswer
 

je vais voir si je peut exploiter ce module (l'installer sur le serveur déjà).
Merci.


---------------
De Marx j'ai avant tout retenu la notion de capital
n°1139970
burgergold
5$? va chez l'diable!
Posté le 05-07-2005 à 04:41:13  profilanswer
 

open(FENT, '< tonfichier.txt');
foreach my $line (reverse(<FENT> )) {
  print $line;
}
close(FENT);


Message édité par burgergold le 05-07-2005 à 04:44:50
n°1140003
pospos
Posté le 05-07-2005 à 09:05:35  profilanswer
 

ou mais la tu lis le fichier entirement en memoire.
dans ce ca autant tapper un bonne grosse regexp pour aller chercher la derniere occurence de ce que l'on cherche (si on ne cherche qu'une seule chose)


Message édité par pospos le 05-07-2005 à 09:07:00
n°1140018
thurfin
la clarté dans la confusion
Posté le 05-07-2005 à 09:32:03  profilanswer
 

->Burgergold
ca m'a l'air pas mal. Merci


---------------
De Marx j'ai avant tout retenu la notion de capital
n°1142561
bioinfo_dj​ib
Posté le 06-07-2005 à 19:59:35  profilanswer
 

bah tu met ton fichier dans un tableau

Code :
  1. fichier = <FILE>;


puis tu lis la derniere case du tableau
pas besoin de faire de boucle  :)

n°1142825
burgergold
5$? va chez l'diable!
Posté le 07-07-2005 à 04:02:20  profilanswer
 

bioinfo_djib a écrit :

bah tu met ton fichier dans un tableau

Code :
  1. fichier = <FILE>;


puis tu lis la derniere case du tableau
pas besoin de faire de boucle  :)


 
il veut pas simplement la dernière case, il veut parcourir à l'envers

n°1143293
bioinfo_dj​ib
Posté le 07-07-2005 à 14:54:39  profilanswer
 

bah il peut parcourir le tableau de la derniere case à la premiere

mood
Publicité
Posté le 07-07-2005 à 14:54:39  profilanswer
 

n°1143353
thurfin
la clarté dans la confusion
Posté le 07-07-2005 à 15:35:32  profilanswer
 

mettre le fichier dans un tableau hum je sais pas trop


---------------
De Marx j'ai avant tout retenu la notion de capital
n°1143487
burgergold
5$? va chez l'diable!
Posté le 07-07-2005 à 17:32:19  profilanswer
 

le reverse a le meme effet, c'est dans un tableau temporaire en mémoire

n°1143490
Elmoricq
Modérateur
Posté le 07-07-2005 à 17:34:22  profilanswer
 

A mon avis, si le fichier est de taille conséquente (ce qui arrive souvent avec les logs), il serait plus judicieux d'utiliser le module que pospos a mis en lien.
 
Il est fait spécialement pour ça, inutile de bricoler.


Message édité par Elmoricq le 07-07-2005 à 17:34:44
n°1143866
burgergold
5$? va chez l'diable!
Posté le 08-07-2005 à 02:31:18  profilanswer
 

Elmoricq a écrit :

A mon avis, si le fichier est de taille conséquente (ce qui arrive souvent avec les logs), il serait plus judicieux d'utiliser le module que pospos a mis en lien.
 
Il est fait spécialement pour ça, inutile de bricoler.


 
ca dépend toujours de l'environnement
 
si on parle d'un environnement de plusieurs serveurs dont l'images doit rester la plus intact possible en cas de recouvrement, je recommanderais ma méthode en sachant que les logs ne doivent pas être gros car ca bouffe de l'espace disque pour rien, il faut archiver à intervalle régulier
 
moi je dis que si c'est moins de 20mo le log et que ca ne roule pas plusieurs fois par jours, pas la peine de se casser la tete

n°1144098
thurfin
la clarté dans la confusion
Posté le 08-07-2005 à 10:50:46  profilanswer
 

les logs sont sous forme de journeaux quotidiens et ne font que quelques dizaines de ko pour les plus gros.
le reversesemble fonctionner et j'ai pas trop envie de me lancer sur le module (tout un bordel faut appeler un admin pour l'installer tout ca)
 
par contre j'ai un prb:
ma ligne dans le fich de log est formée de cette manière:
 
bla_bla_192.168.1.25:1 infossnmp;2 infos snmp2; etc
 
dans mon script je souhaite séparé l'en-tête dans un tableau(bla_bla_192.168.1.25) du reste.
Prb le séparateur ':' apparait dans certaine infos snmp (ex up time sous forme nb jour hh:mm:ss)
 
bref avec split c pas glop
j'ai fait ca :
 

Code :
  1. @ligne = split ':', $line;


 
si quequ'un pouvait m'éclairé sachant qu'il n'est pas possible de changer le séparateur, je suis obligé de garder ':'.
Merci.


---------------
De Marx j'ai avant tout retenu la notion de capital
n°1144399
burgergold
5$? va chez l'diable!
Posté le 08-07-2005 à 14:36:39  profilanswer
 

my ($header, @smtp_info) = split(':', $line);
my $smtp_info = join('', @smtp_info);

n°1144406
thurfin
la clarté dans la confusion
Posté le 08-07-2005 à 14:42:02  profilanswer
 

bon j'y arrive j'ai fait ca à l'arrache (décolage et recolage après des éléments)


---------------
De Marx j'ai avant tout retenu la notion de capital

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Perl

  [perl] lire un fichier à l'envers

 

Sujets relatifs
isoler le nom d'un fichier[php] filtrage de date fichier
[Delphi] Comment différencier un fichier d'un répertoireEcrire et lire dans un terminal
[Perl] Timeout sur socketConvertir fichier excel en fichier xml
Supprimer les lignes d'un fichier ?SIGPIPE, perl et Win32
[JAVA] Lecture/Ecriture dans un fichier texte. 
Plus de sujets relatifs à : [perl] lire un fichier à l'envers


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR