Script perl recuperant une donnee dans un log
Fermé
anobyv
Messages postés
19
Date d'inscription
mardi 15 avril 2014
Statut
Membre
Dernière intervention
14 août 2014
-
Modifié par zipe31 le 15/04/2014 à 11:45
[Dal] Messages postés 6200 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 7 janvier 2025 - 16 avril 2014 à 18:48
[Dal] Messages postés 6200 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 7 janvier 2025 - 16 avril 2014 à 18:48
A voir également:
- Script perl recuperant une donnee dans un log
- Script vidéo youtube - Guide
- Comment recuperer un message supprimé sur whatsapp - Guide
- Comment récupérer un compte facebook piraté - Guide
- Récupérer une vidéo youtube - Guide
- Comment récupérer un document dans le presse-papier samsung - Guide
6 réponses
zipe31
Messages postés
36402
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 419
15 avril 2014 à 11:46
15 avril 2014 à 11:46
Chris 94
Messages postés
50978
Date d'inscription
mardi 8 janvier 2008
Statut
Modérateur
Dernière intervention
17 février 2023
7 342
15 avril 2014 à 11:46
15 avril 2014 à 11:46
Bonjour,
Urgent ? Vraiment ? Serait-ce à rendre rapidement ?..
Les réponses sont données gratuitement par des personnes bénévoles selon leurs compétences et le temps dont elles disposent. Pour les vraies urgences, il est recommandé de consulter un professionnel.
Urgent ? Vraiment ? Serait-ce à rendre rapidement ?..
Les réponses sont données gratuitement par des personnes bénévoles selon leurs compétences et le temps dont elles disposent. Pour les vraies urgences, il est recommandé de consulter un professionnel.
zipe31
Messages postés
36402
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 419
15 avril 2014 à 11:47
15 avril 2014 à 11:47
Aie,
Pfffff, qu'est-ce que t'es lent... Aplu d'urgence ;-D
Pfffff, qu'est-ce que t'es lent... Aplu d'urgence ;-D
Chris 94
Messages postés
50978
Date d'inscription
mardi 8 janvier 2008
Statut
Modérateur
Dernière intervention
17 février 2023
7 342
15 avril 2014 à 11:49
15 avril 2014 à 11:49
Bin ouais, y en a qui ont quatre bras... ,-))
Ton complément d'infos ci-dessous est bien aussi.
Ton complément d'infos ci-dessous est bien aussi.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
anobyv
Messages postés
19
Date d'inscription
mardi 15 avril 2014
Statut
Membre
Dernière intervention
14 août 2014
15 avril 2014 à 12:56
15 avril 2014 à 12:56
l'intention n'etait pas mauvaise ou presser qui que ce soit !!!!!
j'ai commencé a lire la doc sur Perl.....
votre aide est la bienvenue à votre guise :-)
j'ai commencé a lire la doc sur Perl.....
votre aide est la bienvenue à votre guise :-)
[Dal]
Messages postés
6200
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
7 janvier 2025
1 097
Modifié par [Dal] le 15/04/2014 à 14:27
Modifié par [Dal] le 15/04/2014 à 14:27
Il te suffit de préparer une regexp matchant les lignes comportant
Si tu débutes en Perl, pourquoi utilises tu ce langage pour faire ce script ? Utilise un autre langage dont tu serais plus familier. Tu pourrais le faire facilement avec grep et sed sous Linux / Unix, par exemple.
S'il s'agit réellement d'un exercice, ou que Perl t'est imposé, je t'encourage à coder toi même ton script, et si tu as une question précise, de la poser ici, avec ton code et la partie te posant pb.
Et, s'il s'agit réellement d'un exercice, lire le lien proposé par zipe31 ci-dessous s'impose (et lire ton cours et tes manuels).
Dal
SYSTEM STATS, avec une capture de l'heure, de passer toutes tes lignes du fichier dessus avec une boucle, et de restituer en fin de boucle la dernière valeur affectée (si au moins une ligne a matché).
Si tu débutes en Perl, pourquoi utilises tu ce langage pour faire ce script ? Utilise un autre langage dont tu serais plus familier. Tu pourrais le faire facilement avec grep et sed sous Linux / Unix, par exemple.
S'il s'agit réellement d'un exercice, ou que Perl t'est imposé, je t'encourage à coder toi même ton script, et si tu as une question précise, de la poser ici, avec ton code et la partie te posant pb.
Et, s'il s'agit réellement d'un exercice, lire le lien proposé par zipe31 ci-dessous s'impose (et lire ton cours et tes manuels).
Dal
zipe31
Messages postés
36402
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 419
15 avril 2014 à 14:30
15 avril 2014 à 14:30
Salut [Dal],
Et, s'il s'agit réellement d'un exercice, lire le lien proposé par zipe31 ci-dessous s'impose.Et même s'il ne s'agit pas d'un exercice, on apprend plus facilement en essayant par soi même, qu'en trouvant du tout cuit fait par un autre, d'autant plus que bien souvent ses propres erreurs sont bien plus constructives que n'importe quel cours ;-\
[Dal]
Messages postés
6200
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
7 janvier 2025
1 097
15 avril 2014 à 14:53
15 avril 2014 à 14:53
Salut zipe31, on est d'accord :-)
anobyv
Messages postés
19
Date d'inscription
mardi 15 avril 2014
Statut
Membre
Dernière intervention
14 août 2014
15 avril 2014 à 22:59
15 avril 2014 à 22:59
J'ai essayé avec la doc que jai lu
Le code :
#!/usr/local/bin/perl
use strict;
use warnings;
my $ligne;
my $filename = "C:\\fichier_test.txt";
my $fh;
open ($fh, '<', $filename) or die "Impossible d'ouvrir le fichier $filename en lecture";
foreach $ligne(<$fh>)
{
if ($ligne =~ /STATS:Time =<([^>]+*/){
print "time=$1";
}
}
close $fh;
Le code :
#!/usr/local/bin/perl
use strict;
use warnings;
my $ligne;
my $filename = "C:\\fichier_test.txt";
my $fh;
open ($fh, '<', $filename) or die "Impossible d'ouvrir le fichier $filename en lecture";
foreach $ligne(<$fh>)
{
if ($ligne =~ /STATS:Time =<([^>]+*/){
print "time=$1";
}
}
close $fh;
[Dal]
Messages postés
6200
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
7 janvier 2025
1 097
Modifié par [Dal] le 16/04/2014 à 10:17
Modifié par [Dal] le 16/04/2014 à 10:17
les lignes qui t'intéressent contiennent quelque chose du type :
04/15/2014 11:39:16 AM - SYSTEM STATS: Time:255.1539 Method:spine Processes:1 Threads:13 Hosts:91 HostsPerProcess:91 DataSources:7356 RRDsProcessed:2528
et ce que tu veux capturer est ce qui est en gras.
ta regexp
- tu matches "STATS", mais cela ne te permet pas de différencier SYSTEM STATS (que tu veux) de SYSTEM THOLD STATS (dont tu ne veux pas)
- tu ajoutes ":Time =<" qui ne figure nulle part sur ta ligne, ce qui y figure c'est ": Time:"
- tu ouvres une parenthèse capturante que tu ne fermes pas
- tu ne captures pas les données numériques séparées par un point qui t'intéressent et tu cumules les quantificateurs + et * ce qui se signifie rien et produit une erreur de syntaxe
https://perldoc.perl.org/perlre#Character-Classes-and-other-Special-Escapes
pour matcher des chiffres séparés par un point, cela serait plutôt :
ou si tu tiens à utiliser une classe avec une négation de caractères, fait une négation sur l'espace, car tes données ne sont pas terminées par un ">".
Dal
04/15/2014 11:39:16 AM - SYSTEM STATS: Time:255.1539 Method:spine Processes:1 Threads:13 Hosts:91 HostsPerProcess:91 DataSources:7356 RRDsProcessed:2528
et ce que tu veux capturer est ce qui est en gras.
ta regexp
/STATS:Time =<([^>]+*/n'est pas appropriée (outre le fait qu'elle ne compile pas), car :
- tu matches "STATS", mais cela ne te permet pas de différencier SYSTEM STATS (que tu veux) de SYSTEM THOLD STATS (dont tu ne veux pas)
- tu ajoutes ":Time =<" qui ne figure nulle part sur ta ligne, ce qui y figure c'est ": Time:"
- tu ouvres une parenthèse capturante que tu ne fermes pas
- tu ne captures pas les données numériques séparées par un point qui t'intéressent et tu cumules les quantificateurs + et * ce qui se signifie rien et produit une erreur de syntaxe
https://perldoc.perl.org/perlre#Character-Classes-and-other-Special-Escapes
pour matcher des chiffres séparés par un point, cela serait plutôt :
\d+\.\d+
ou si tu tiens à utiliser une classe avec une négation de caractères, fait une négation sur l'espace, car tes données ne sont pas terminées par un ">".
Dal
anobyv
Messages postés
19
Date d'inscription
mardi 15 avril 2014
Statut
Membre
Dernière intervention
14 août 2014
16 avril 2014 à 10:26
16 avril 2014 à 10:26
Merci beaucoup de ton retour
j'ai du mal encore avec les expressions regulières mais je suis sur la doc now.je vais lire et essayer d'ameliorer le code avec tes remarques
Merci encore :)
j'ai du mal encore avec les expressions regulières mais je suis sur la doc now.je vais lire et essayer d'ameliorer le code avec tes remarques
Merci encore :)