[PERL]- Extraire lignes à partir de la n ième
blux
Messages postés
27166
Date d'inscription
Statut
Modérateur
Dernière intervention
-
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,
j'ai un fichier dont toutes les lignes sont horodatées (aammjj-hhmmss) :
070522-111819>
070522-111819> Start time: Tue May 22 11:17:26 2007
070522-111819> End time: Tue May 22 11:18:19 2007
070522-111819>
070522-111819>
070522-111819> --- Never Started Save Sets ---
Et je cherche une méthode en perl pour extraire toutes les lignes qui sont postérieures à une date et une heure donnée pour les traiter, dans le but de gagner en vitesse de traitement (mon fichier est un log de plusieurs centaines de milliers de lignes...)
Quelqu'un aurait quelque chose à me proposer ?
Merci d'avance.
j'ai un fichier dont toutes les lignes sont horodatées (aammjj-hhmmss) :
070522-111819>
070522-111819> Start time: Tue May 22 11:17:26 2007
070522-111819> End time: Tue May 22 11:18:19 2007
070522-111819>
070522-111819>
070522-111819> --- Never Started Save Sets ---
Et je cherche une méthode en perl pour extraire toutes les lignes qui sont postérieures à une date et une heure donnée pour les traiter, dans le but de gagner en vitesse de traitement (mon fichier est un log de plusieurs centaines de milliers de lignes...)
Quelqu'un aurait quelque chose à me proposer ?
Merci d'avance.
A voir également:
- [PERL]- Extraire lignes à partir de la n ième
- Extraire une video youtube - Guide
- Creer un groupe whatsapp a partir d'un autre groupe - Guide
- Extraire le son d'une vidéo - Guide
- Aller à la ligne excel - Guide
- Comment faire une recherche à partir d'une photo - Guide
19 réponses
Salut,
je vais voir ça ce soir.
en revanche j'aimerais bien que tu affiche quelques lignes pour avoir la structure correcte
merci
je vais voir ça ce soir.
en revanche j'aimerais bien que tu affiche quelques lignes pour avoir la structure correcte
merci
L'exemple ne suffit pas ?
Je rajoute moi-même à l'écriture du fichier la date et l'heure et un >
Il est possible que plusieurs lignes aient la même heure (et la même date d'ailleurs) et les lignes peuvent être TRES longues (>1000 car)
070519-011115> NetWorker savegroup: (notice) G-PLANETE completed, Total 4 client(s), 4 Succeeded. Please see group completion details for more information.
070519-011115>
070519-011115> Succeeded: mars, jupiter, io, neptune
070519-011115>
070519-011115> Start time: Fri May 18 21:30:00 2007
070519-011115> End time: Sat May 19 01:11:14 2007
070519-011115>
070519-011115>
070519-011115> --- Successful Save Sets ---
070519-011115>
070519-011115> mars: /app/v2i03 level=incr, 0 KB 00:00:08 0 files
070519-011115> mars: /app/wui03 level=incr, 0 KB 00:00:03 0 files
070519-011115> mars: /app/fai03 level=incr, 0 KB 00:00:05 0 files
070519-011115> mars: /app/v1i03 level=incr, 0 KB 00:00:05 0 files
070519-011115> mars: /app/w1i03 level=incr, 11 KB 00:00:05 5 files
070519-011115> mars: /svg/hai03 level=incr, 0 KB 00:00:03 0 files
070519-011115> mars: /fic/hai03 level=incr, 0 KB 00:00:03 0 files
070519-011115> mars: /log/hai03 level=incr, 0 KB 00:00:03 0 files
070519-011115> mars: /app/hai03 level=incr, 0 KB 00:00:04 0 files
070519-011115> mars: /svg/eni03 level=incr, 0 KB 00:00:04 0 files
070519-011115> mars: /fic/eni03 level=incr, 0 KB 00:00:06 0 files
070519-011115> mars: /log/eni03 level=incr, 0 KB 00:00:02 0 files
070519-011115> mars: /app/eni03 level=incr, 0 KB 00:00:03 0 files
070519-011115> mars: /log/x2i03 level=incr, 0 KB 00:00:04 0 files
070519-011115> mars: /app/x2i03 level=incr, 0 KB 00:00:02 0 files
070519-011116> mars: /log/tbi03 level=incr, 0 KB 00:00:03 0 files
070519-011116> mars: /svg/svi03 level=incr, 0 KB 00:00:04 0 files
070519-011116> mars: /fic/svi03 level=incr, 0 KB 00:00:06 0 files
070519-011116> mars: /log/svi03 level=incr, 0 KB 00:00:02 0 files
070519-011116> mars: /app/svi03 level=incr, 0 KB 00:00:04 0 files
070519-011116> mars: /svg/mitci03 level=incr, 0 KB 00:00:03 0 files
070519-011116> mars: /fic/mitci03 level=incr, 0 KB 00:00:03 0 files
070519-011116> mars: /log/mitci03 level=incr, 0 KB 00:00:03 0 files
070519-011116> mars: /app/mitci03 level=incr, 0 KB 00:00:03 0 files
070519-011116> mars: /svg/cii03 level=incr, 0 KB 00:00:06 0 files
070519-011116> mars: /log/cii03 level=incr, 0 KB 00:00:03 0 files
070519-011116> mars: /app/cii03 level=incr, 0 KB 00:00:02 0 files
Je rajoute moi-même à l'écriture du fichier la date et l'heure et un >
Il est possible que plusieurs lignes aient la même heure (et la même date d'ailleurs) et les lignes peuvent être TRES longues (>1000 car)
070519-011115> NetWorker savegroup: (notice) G-PLANETE completed, Total 4 client(s), 4 Succeeded. Please see group completion details for more information.
070519-011115>
070519-011115> Succeeded: mars, jupiter, io, neptune
070519-011115>
070519-011115> Start time: Fri May 18 21:30:00 2007
070519-011115> End time: Sat May 19 01:11:14 2007
070519-011115>
070519-011115>
070519-011115> --- Successful Save Sets ---
070519-011115>
070519-011115> mars: /app/v2i03 level=incr, 0 KB 00:00:08 0 files
070519-011115> mars: /app/wui03 level=incr, 0 KB 00:00:03 0 files
070519-011115> mars: /app/fai03 level=incr, 0 KB 00:00:05 0 files
070519-011115> mars: /app/v1i03 level=incr, 0 KB 00:00:05 0 files
070519-011115> mars: /app/w1i03 level=incr, 11 KB 00:00:05 5 files
070519-011115> mars: /svg/hai03 level=incr, 0 KB 00:00:03 0 files
070519-011115> mars: /fic/hai03 level=incr, 0 KB 00:00:03 0 files
070519-011115> mars: /log/hai03 level=incr, 0 KB 00:00:03 0 files
070519-011115> mars: /app/hai03 level=incr, 0 KB 00:00:04 0 files
070519-011115> mars: /svg/eni03 level=incr, 0 KB 00:00:04 0 files
070519-011115> mars: /fic/eni03 level=incr, 0 KB 00:00:06 0 files
070519-011115> mars: /log/eni03 level=incr, 0 KB 00:00:02 0 files
070519-011115> mars: /app/eni03 level=incr, 0 KB 00:00:03 0 files
070519-011115> mars: /log/x2i03 level=incr, 0 KB 00:00:04 0 files
070519-011115> mars: /app/x2i03 level=incr, 0 KB 00:00:02 0 files
070519-011116> mars: /log/tbi03 level=incr, 0 KB 00:00:03 0 files
070519-011116> mars: /svg/svi03 level=incr, 0 KB 00:00:04 0 files
070519-011116> mars: /fic/svi03 level=incr, 0 KB 00:00:06 0 files
070519-011116> mars: /log/svi03 level=incr, 0 KB 00:00:02 0 files
070519-011116> mars: /app/svi03 level=incr, 0 KB 00:00:04 0 files
070519-011116> mars: /svg/mitci03 level=incr, 0 KB 00:00:03 0 files
070519-011116> mars: /fic/mitci03 level=incr, 0 KB 00:00:03 0 files
070519-011116> mars: /log/mitci03 level=incr, 0 KB 00:00:03 0 files
070519-011116> mars: /app/mitci03 level=incr, 0 KB 00:00:03 0 files
070519-011116> mars: /svg/cii03 level=incr, 0 KB 00:00:06 0 files
070519-011116> mars: /log/cii03 level=incr, 0 KB 00:00:03 0 files
070519-011116> mars: /app/cii03 level=incr, 0 KB 00:00:02 0 files
L'exemple ne suffit pas ?
Oui, j'ai lu en diagonale :-))
Avant de partir du boulot voilà une piste (je n'ai pas testé)
En supposant que le fichier est trié par date tu peux lire à partir d'une certaine date de cette façon
lami20j
Oui, j'ai lu en diagonale :-))
Avant de partir du boulot voilà une piste (je n'ai pas testé)
En supposant que le fichier est trié par date tu peux lire à partir d'une certaine date de cette façon
open LIRE,"tonfichier" or die "E/S : $!\n"; open ECRIRE, ">resultat" or die "E/S : $!\n"; $date='ta_date'; $heure='heure'; while(<LIRE>){ print ECRIRE if /${date}-$heure/ .. eof; }--
lami20j
Salut,
je suis au boulot et je n'ai pas trop de temps.
semble-t-il que les opérateurs .. et ... sont un peu plus difficile à comprendre
je vais essayer ce soir de t'expliquer un peut le comportement de ces 2 opérateurs, bien sûr si ça t'interesse
je suis au boulot et je n'ai pas trop de temps.
semble-t-il que les opérateurs .. et ... sont un peu plus difficile à comprendre
je vais essayer ce soir de t'expliquer un peut le comportement de ces 2 opérateurs, bien sûr si ça t'interesse
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Re,
Les opérateurs .. et ... peuvent être utilisés avec des regex ou avec des numéros de lignes.
L'opérateur .. renvoie VRAI si les 2 tests sont VRAI sur la même lignes, en revanche ... ne le fait pas.
Dans l'expression DEBUT .. FIN la valeur FAUX est renvoyé sans arrêt si DEBUT n'est pas vérifié.
Une fois DEBUT verifié, il n'est plus vérifié et la valeur VRAI est retournée jusqu'à quand FIN est vérifié.
Quand FIN est vérifié, le cycle recommence.
Pour voir la différence entre .. et ... je vais te donner un exemple
Pour ..
DEBUT de la chaine, jusqu'à la FIN
Pour ...
DEBUT de la chaine, jusqu'à la FIN
comprendre les opérateurs .. et ...
FIN
L'opérateur .. teste les deux conditions sur la même ligne, donc si le test est vérifié alors il retourne VRAI jusqu'à quand il FIN est vérifié, et il s'arrête. Le cycle ne recommence plus puisque DEBUT n'est plus vérifié.
L'opérateur ... va continue jusqu'à la prochaine ligne qui contient FIN. L'opérateur ... ne teste pas les conditions dans le même temps.
Un autre comportement spécial c'est dans le cas d'utilisation de numéro de ligne au lieu des regex.
On ne peux pas écrire
On peut écrire
Les opérateurs .. et ... peuvent être utilisés avec des regex ou avec des numéros de lignes.
L'opérateur .. renvoie VRAI si les 2 tests sont VRAI sur la même lignes, en revanche ... ne le fait pas.
Dans l'expression DEBUT .. FIN la valeur FAUX est renvoyé sans arrêt si DEBUT n'est pas vérifié.
Une fois DEBUT verifié, il n'est plus vérifié et la valeur VRAI est retournée jusqu'à quand FIN est vérifié.
Quand FIN est vérifié, le cycle recommence.
Pour voir la différence entre .. et ... je vais te donner un exemple
Pour ..
#!/usr/bin/perl while(<DATA>){ print if /DEBUT/ .. /FIN/; } __END__ DEBUT de la chaine, jusqu'à la FIN comprendre les opérateurs .. et ... FINLe résultat est
DEBUT de la chaine, jusqu'à la FIN
Pour ...
#!/usr/bin/perl while(<DATA>){ print if /DEBUT/ ... /FIN/; } __END__ DEBUT de la chaine, jusqu'à la FIN comprendre les opérateurs .. et ... FINLe résultat est
DEBUT de la chaine, jusqu'à la FIN
comprendre les opérateurs .. et ...
FIN
L'opérateur .. teste les deux conditions sur la même ligne, donc si le test est vérifié alors il retourne VRAI jusqu'à quand il FIN est vérifié, et il s'arrête. Le cycle ne recommence plus puisque DEBUT n'est plus vérifié.
L'opérateur ... va continue jusqu'à la prochaine ligne qui contient FIN. L'opérateur ... ne teste pas les conditions dans le même temps.
Un autre comportement spécial c'est dans le cas d'utilisation de numéro de ligne au lieu des regex.
On ne peux pas écrire
$debut = 10; $fin = 100; print if $debut .. $fin;
On peut écrire
print if 1..10;ou
$debut = 10; $fin = 100; print if $. == $debut .. $. == $fin;
Salut,
Parce que $, c'est pour dire variable, non ?
Plus précis, scalaire en Perl.
Oui, puisque l'opérateur m// permet l'interpolation des variables.
Je vais essayer de donner une explication un peu moins obscure.
Prenons le fragment et je veux obtenir seulement le paragraphe entre DEBUT et FIN
Je suis obligé d'utilser ... puisque .. fait le teste sur la même ligne
(ne demande pas pourquoi, puisque sinon je te demanderai pourquoi avec + j'obtiens 1 + 1 = 0 et avec - j'obtiens 1 - 1 = 0)
C'est tout simplement un opérateur qui a été conçu pour ça :-))
......
zzzzzzzzzzz
DEBUT aaaaaaaaaaa FIN
gdsdfsdf
dsfsdf
FIN
zzzzzzzzzzz
............
En fait l'opérateur ... travaille de la façon suivante
Il cherche DEBUT, une fois qu'il le trouve il ne le cherche plus et renvoie VRAI en testant toujours si FIN existe ou pas
Une fois qu'il a trouvé FIN il s'arrête et le cycle recommence (c'est pratique quand on a plusieurs paragraphes situés entre DEBUT et FIN)
Dans ton cas j'ai utiliser la fonction eof pour obtenir tout entre le 1er DEBUT rencontré (en fin tes dates) jusqu'à la fin de fichier.
C'est plus clair maintenant?
Parce que $, c'est pour dire variable, non ?
Plus précis, scalaire en Perl.
Oui, puisque l'opérateur m// permet l'interpolation des variables.
Je vais essayer de donner une explication un peu moins obscure.
Prenons le fragment et je veux obtenir seulement le paragraphe entre DEBUT et FIN
Je suis obligé d'utilser ... puisque .. fait le teste sur la même ligne
(ne demande pas pourquoi, puisque sinon je te demanderai pourquoi avec + j'obtiens 1 + 1 = 0 et avec - j'obtiens 1 - 1 = 0)
C'est tout simplement un opérateur qui a été conçu pour ça :-))
......
zzzzzzzzzzz
DEBUT aaaaaaaaaaa FIN
gdsdfsdf
dsfsdf
FIN
zzzzzzzzzzz
............
En fait l'opérateur ... travaille de la façon suivante
Il cherche DEBUT, une fois qu'il le trouve il ne le cherche plus et renvoie VRAI en testant toujours si FIN existe ou pas
Une fois qu'il a trouvé FIN il s'arrête et le cycle recommence (c'est pratique quand on a plusieurs paragraphes situés entre DEBUT et FIN)
Dans ton cas j'ai utiliser la fonction eof pour obtenir tout entre le 1er DEBUT rencontré (en fin tes dates) jusqu'à la fin de fichier.
C'est plus clair maintenant?
J'ai quand même un souci : si la forme recherchée n'existe pas, alors on ne recopie rien...
Vu que c'est une date et une heure, je voudrais recopier si c'est 'supérieur à ', or il est possible que je n'ai pas de ligne dans le fichier pour une heure donnée...
Tu as une idée ?
Vu que c'est une date et une heure, je voudrais recopier si c'est 'supérieur à ', or il est possible que je n'ai pas de ligne dans le fichier pour une heure donnée...
Tu as une idée ?
Salut,
bien sûr que je pourrais avoir une idée, mais dans des cas particuliers comme celui là il faut avoir la structure de fichier et aussi ce que je cherche avec l'exactitude
à savoir aussi (j'ai remarqué que pour une date et heure il ya plusieurs lignes) qu'il faut savoir exactement ce qu'on cherche
si jamais une ligne sans date et heure se trouve dans le DEBUT et FIN alors sache qu'elle sera pris en compte même si on ne veut pas
Pour corriger ça on peut utiliser next pour que le script saute les lignes qui ne commencent pas avec date et heure
Tu vois qu'il y a plusieurs situations qu'on doit prendre en compte.
En bref je pourrais repondre à tes questions si tu me dit décrit avec précison les cas concrets.
En ce qui concerne l'histoire de supériour à on peut le faire, en utilisant des regex et pas des comparaisons
par exemple pour chercher tout les numéros qui sont plus grandes que 24 on peut faire
1. avec comparaison
on pout comparer directement avec >= 24 par exemple
2. avec regex
on ne pense pas à une comparaison mais à une corespondace des caractères
je m'explique
si je cherche tout les données plus grandes que 24 ça veut dire que le 1er caractère soit il va être 2 et je l'associe avec la classe [4-9] pour le 2ème caractère
soit le 1er caractère je vais le charcher dans la classe [3-9] et pour le 2ème séra la classe [0-9]
il nous reste à chercher avec le motif /2[4-9]|[3-9][0-9]/ qui vas envoyer toujours vrai pour
24
25
.
.
29
34
.
.
99
a toi :-))
bien sûr que je pourrais avoir une idée, mais dans des cas particuliers comme celui là il faut avoir la structure de fichier et aussi ce que je cherche avec l'exactitude
à savoir aussi (j'ai remarqué que pour une date et heure il ya plusieurs lignes) qu'il faut savoir exactement ce qu'on cherche
si jamais une ligne sans date et heure se trouve dans le DEBUT et FIN alors sache qu'elle sera pris en compte même si on ne veut pas
Pour corriger ça on peut utiliser next pour que le script saute les lignes qui ne commencent pas avec date et heure
Tu vois qu'il y a plusieurs situations qu'on doit prendre en compte.
En bref je pourrais repondre à tes questions si tu me dit décrit avec précison les cas concrets.
En ce qui concerne l'histoire de supériour à on peut le faire, en utilisant des regex et pas des comparaisons
par exemple pour chercher tout les numéros qui sont plus grandes que 24 on peut faire
1. avec comparaison
on pout comparer directement avec >= 24 par exemple
2. avec regex
on ne pense pas à une comparaison mais à une corespondace des caractères
je m'explique
si je cherche tout les données plus grandes que 24 ça veut dire que le 1er caractère soit il va être 2 et je l'associe avec la classe [4-9] pour le 2ème caractère
soit le 1er caractère je vais le charcher dans la classe [3-9] et pour le 2ème séra la classe [0-9]
il nous reste à chercher avec le motif /2[4-9]|[3-9][0-9]/ qui vas envoyer toujours vrai pour
24
25
.
.
29
34
.
.
99
a toi :-))
TOUTES les lignes commencent par aammjj-hhmmss.
Mais vu que c'est un fichier log, il y a des cas où l'on écrit pas pendant de longues périodes.
Je veux pouvoir sélectionner toutes les lignes postérieures (ou égales) à une heure donnée, même s'il n'y a pas d'entrées pour cette heure :
070531-061212
070531-061312
070531-061412
070531-061512
070531-081212
070531-091212
Ici, je voudrais avoir la possibilité de sélectionner tout ce qui vient après 7h00, même si aucune ligne n'existe pour 7h...
S'il le faut je peux changer l'horodatage (c'est moi qui le gère) pour supprimer le '-' et faire de la date et heure un nombre entier strictement croissant...
Ca t'aidrait ?
Mais vu que c'est un fichier log, il y a des cas où l'on écrit pas pendant de longues périodes.
Je veux pouvoir sélectionner toutes les lignes postérieures (ou égales) à une heure donnée, même s'il n'y a pas d'entrées pour cette heure :
070531-061212
070531-061312
070531-061412
070531-061512
070531-081212
070531-091212
Ici, je voudrais avoir la possibilité de sélectionner tout ce qui vient après 7h00, même si aucune ligne n'existe pour 7h...
S'il le faut je peux changer l'horodatage (c'est moi qui le gère) pour supprimer le '-' et faire de la date et heure un nombre entier strictement croissant...
Ca t'aidrait ?
Salut,
voici une possibilité
La comparaison je la fait par rapport à la date et heure 070519011112 qui n'existe pas
voici une possibilité
#!/usr/bin/perl use strict;use warnings; print "Entrez la date et heure de debut, format yymmddhhmmss [par défaut 070519011112] : "; chomp(my $lim = <STDIN>); $lim ||= '070519011112'; while (<DATA>){ /^(\d+)-(\d+)\D/; print if ($1 . $2) >= $lim; } __END__ 070510-011110> NetWorker savegroup: (notice) G-PLANETE completed 070510-011110> 070510-011110> Succeeded: mars, jupiter, io, neptune 070510-011110> 070510-011110> Start time: Fri May 18 21:30:00 2007 070510-011110> End time: Sat May 19 01:11:14 2007 070510-011110> 070510-011110> 070510-011110> --- Successful Save Sets --- 070519-011115> --- LIMITE 070519-011115> mars: /app/v2i03 level=incr, 0 KB 00:00:08 0 files 070519-011115> mars: /app/wui03 level=incr, 0 KB 00:00:03 0 files 070519-011115> mars: /app/x2i03 level=incr, 0 KB 00:00:02 0 files 070519-011116> mars: /log/tbi03 level=incr, 0 KB 00:00:03 0 files 070519-011116> mars: /svg/svi03 level=incr, 0 KB 00:00:04 0 files 070519-011116> mars: /app/svi03 level=incr, 0 KB 00:00:04 0 files 070519-011116> mars: /app/cii03 level=incr, 0 KB 00:00:02 0 files 070531-061312 070531-061412 070531-061512 070531-081212 070531-091212 070531-091116> mars: /fic/mitci03 level=incr, 0 KB 00:00:03 0 files 070531-091116> mars: /log/mitci03 level=incr, 0 KB 00:00:03 0 files 070532-061116> mars: /app/mitci03 level=incr, 0 KB 00:00:03 0 filesLe résultat
La comparaison je la fait par rapport à la date et heure 070519011112 qui n'existe pas
lami20j@debian:~$ perl ccm.pl Entrez la date et heure de debut, format yymmddhhmmss [par défaut 070519011112] : 070519-011115> --- LIMITE 070519-011115> mars: /app/v2i03 level=incr, 0 KB 00:00:08 0 files 070519-011115> mars: /app/wui03 level=incr, 0 KB 00:00:03 0 files 070519-011115> mars: /app/x2i03 level=incr, 0 KB 00:00:02 0 files 070519-011116> mars: /log/tbi03 level=incr, 0 KB 00:00:03 0 files 070519-011116> mars: /svg/svi03 level=incr, 0 KB 00:00:04 0 files 070519-011116> mars: /app/svi03 level=incr, 0 KB 00:00:04 0 files 070519-011116> mars: /app/cii03 level=incr, 0 KB 00:00:02 0 files 070531-061312 070531-061412 070531-061512 070531-081212 070531-091212 070531-091116> mars: /fic/mitci03 level=incr, 0 KB 00:00:03 0 files 070531-091116> mars: /log/mitci03 level=incr, 0 KB 00:00:03 0 files 070532-061116> mars: /app/mitci03 level=incr, 0 KB 00:00:03 0 files
Salut,
si tu ne veux tester que l'heure il faut sauter la date et le tiret et ne pas les capturer non plus
si tu ne veux tester que l'heure il faut sauter la date et le tiret et ne pas les capturer non plus
while (<DATA>){ /^.{7}(\d+)\D/; print if $1 >= $lim; }Je n'ai pas testé, je suis au boulot
Essaie
/^(\d{6})-(\d\d)/; print if ($1 . $2) >= $lim;sinon tu peux aussi faire avec unpack
($t) = unpack("A6 x1 A2",$_); print if $t >= $lim;toujours pas de test :-)
Et si je ne veux tester que l'heure, ça ne marche pas avec ça :
/^(\d+)-(\d{2})/;
J'ai loupé quoi ?
ça marche ta regex
/^(\d+)-(\d{2})/;
J'ai loupé quoi ?
ça marche ta regex
lami20j@debian:~/trash$ cat ccm.pl #!/usr/bin/perl use strict;use warnings; print "Entrez la date et heure de debut, format yymmddhh [par défaut 07051901] : "; chomp(my $lim = <STDIN>); $lim ||= '070519011112'; while (<DATA>){ /^(\d+)-(\d{2})/; print if ($1 . $2) >= $lim; } __END__ 070510-011110> NetWorker savegroup: (notice) G-PLANETE completed 070510-011110> 070510-011110> Succeeded: mars, jupiter, io, neptune 070510-011110> 070510-011110> Start time: Fri May 18 21:30:00 2007 070510-011110> End time: Sat May 19 01:11:14 2007 070510-011110> 070510-011110> 070510-011110> --- Successful Save Sets --- 070519-011115> --- LIMITE 070519-011115> mars: /app/v2i03 level=incr, 0 KB 00:00:08 0 files 070519-011115> mars: /app/wui03 level=incr, 0 KB 00:00:03 0 files 070519-011115> mars: /app/x2i03 level=incr, 0 KB 00:00:02 0 files 070519-011116> mars: /log/tbi03 level=incr, 0 KB 00:00:03 0 files 070519-011116> mars: /svg/svi03 level=incr, 0 KB 00:00:04 0 files 070519-011116> mars: /app/svi03 level=incr, 0 KB 00:00:04 0 files 070519-011116> mars: /app/cii03 level=incr, 0 KB 00:00:02 0 files 070531-061312 070531-061412 070531-061512 070531-081212 070531-091212 070531-091116> mars: /fic/mitci03 level=incr, 0 KB 00:00:03 0 files 070531-091116> mars: /log/mitci03 level=incr, 0 KB 00:00:03 0 files 070532-061116> mars: /app/mitci03 level=incr, 0 KB 00:00:03 0 files lami20j@debian:~/trash$ perl ccm.pl Entrez la date et heure de debut, format yymmddhh [par défaut 07051901] : 07051901 070519-011115> --- LIMITE 070519-011115> mars: /app/v2i03 level=incr, 0 KB 00:00:08 0 files 070519-011115> mars: /app/wui03 level=incr, 0 KB 00:00:03 0 files 070519-011115> mars: /app/x2i03 level=incr, 0 KB 00:00:02 0 files 070519-011116> mars: /log/tbi03 level=incr, 0 KB 00:00:03 0 files 070519-011116> mars: /svg/svi03 level=incr, 0 KB 00:00:04 0 files 070519-011116> mars: /app/svi03 level=incr, 0 KB 00:00:04 0 files 070519-011116> mars: /app/cii03 level=incr, 0 KB 00:00:02 0 files 070531-061312 070531-061412 070531-061512 070531-081212 070531-091212 070531-091116> mars: /fic/mitci03 level=incr, 0 KB 00:00:03 0 files 070531-091116> mars: /log/mitci03 level=incr, 0 KB 00:00:03 0 files 070532-061116> mars: /app/mitci03 level=incr, 0 KB 00:00:03 0 files lami20j@debian:~/trash$
Oui, ça a remarché, mais entre temps, j'avais mis \d\d...
Pendant que j'y suis, tu aurais des références de littérature ou de sites sur les fameuses regexp ? (à part google...)
Pendant que j'y suis, tu aurais des références de littérature ou de sites sur les fameuses regexp ? (à part google...)
tu aurais des références de littérature
Voilà ce que j'utilise Maîtrise des expressions régulières
Avec ce livre tu n'as pas besoin d'autre chose :-))
Si tu tiens vraiment à maitriser les regex je te le recommande chaleureusement.
Voilà ce que j'utilise Maîtrise des expressions régulières
Avec ce livre tu n'as pas besoin d'autre chose :-))
Si tu tiens vraiment à maitriser les regex je te le recommande chaleureusement.
regexp en perl : https://perldoc.perl.org/perlretut
Salut,
on est sur un site francophone, ne m'oblige pas d'alerter un modo ;-DD
et je pense que tu connais celui là ;-) http://perl.mines-albi.fr/DocFr/perlretut.html
on est sur un site francophone, ne m'oblige pas d'alerter un modo ;-DD
et je pense que tu connais celui là ;-) http://perl.mines-albi.fr/DocFr/perlretut.html