lire un fichier à l'envers [perl] - Perl - Programmation
Marsh Posté le 04-07-2005 à 15:38:48
thurfin a écrit : Bonjour, |
`tac ton_fichier`
mais tu ferais mieux d'utiliser tail ou une fonction équivalente en Perl
Marsh Posté le 04-07-2005 à 16:16:31
je vais voir si je peut exploiter ce module (l'installer sur le serveur déjà).
Merci.
Marsh Posté le 05-07-2005 à 04:41:13
open(FENT, '< tonfichier.txt');
foreach my $line (reverse(<FENT> )) {
print $line;
}
close(FENT);
Marsh Posté le 05-07-2005 à 09:05:35
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)
Marsh Posté le 05-07-2005 à 09:32:03
->Burgergold
ca m'a l'air pas mal. Merci
Marsh Posté le 06-07-2005 à 19:59:35
bah tu met ton fichier dans un tableau
Code :
|
puis tu lis la derniere case du tableau
pas besoin de faire de boucle
Marsh Posté le 07-07-2005 à 04:02:20
bioinfo_djib a écrit : bah tu met ton fichier dans un tableau
|
il veut pas simplement la dernière case, il veut parcourir à l'envers
Marsh Posté le 07-07-2005 à 14:54:39
bah il peut parcourir le tableau de la derniere case à la premiere
Marsh Posté le 07-07-2005 à 15:35:32
mettre le fichier dans un tableau hum je sais pas trop
Marsh Posté le 07-07-2005 à 17:32:19
le reverse a le meme effet, c'est dans un tableau temporaire en mémoire
Marsh Posté le 07-07-2005 à 17:34:22
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.
Marsh Posté le 08-07-2005 à 02:31:18
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. |
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
Marsh Posté le 08-07-2005 à 10:50:46
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 :
|
si quequ'un pouvait m'éclairé sachant qu'il n'est pas possible de changer le séparateur, je suis obligé de garder ':'.
Merci.
Marsh Posté le 08-07-2005 à 14:36:39
my ($header, @smtp_info) = split(':', $line);
my $smtp_info = join('', @smtp_info);
Marsh Posté le 08-07-2005 à 14:42:02
bon j'y arrive j'ai fait ca à l'arrache (décolage et recolage après des éléments)
Marsh Posté le 04-07-2005 à 15:33:38
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