GREP et expressions régulieres

Résolu
pcsystemd Messages postés 734 Statut Membre -  
pcsystemd Messages postés 734 Statut Membre -
Bonjour,

J'essaie de recherche dans un fichier les lignes qui comportent par exemple du 2010-01-04 au 2010-01-11. J'ai fait cela :

grep '2010-01-0[4-9]'


mais le resultat retourné s'arrête a 2010-01-09 et si je fais cela :

grep '2010-01-0[4-10]'


je n'ai rien.

Comment faire?

Merci

6 réponses

jipicy Messages postés 41342 Statut Modérateur 4 896
 
Salut,

egrep -o '2010-01-(0[1-9]|1[12])'

;-))
0
lami20j Messages postés 21644 Statut Modérateur, Contributeur sécurité 3 570
 
Salut,

au 2010-01-11
Il n'y a pas 12 ;-DDD, à moins que tu es sur le coup d'anticipation ;-)
0
jipicy Messages postés 41342 Statut Modérateur 4 896 > lami20j Messages postés 21644 Statut Modérateur, Contributeur sécurité
 
Salut,

Arf, j'ai pas fait gaffe au format de date et j'ai anticipé sur le dernier chiffre comme étant un mois (d'où le 12 = Décembre) ;-((
0
lami20j Messages postés 21644 Statut Modérateur, Contributeur sécurité 3 570 > jipicy Messages postés 41342 Statut Modérateur
 
Re,

Ben, tu as vu le mois et moi j'ai vu le jour ;-) (01 = janvier)
0
lami20j Messages postés 21644 Statut Modérateur, Contributeur sécurité 3 570
 
Salut,
Essaie
$ cat date.txt
2010-01-01
2010-01-04
2010-01-09
2010-01-10
2010-01-11
$ grep -E '2010-01-(0[4-9]|1[01])' date.txt
2010-01-04
2010-01-09
2010-01-10
2010-01-11
0
pcsystemd Messages postés 734 Statut Membre 23
 
Merci a vous deux c'est ok. Bien vue jipicy pour le 12 puisque je dois allé jusqu'au 31 . ;-)
0
lami20j Messages postés 21644 Statut Modérateur, Contributeur sécurité 3 570
 
Re,

Oui, mais en ce cas la regex ne reconnaîtra pas 2010-01-31 par exemple
$ cat date.txt
2010-01-01
2010-01-04
2010-01-09
2010-01-10
2010-01-11
2010-01-20
2010-01-31
2010-02-05

$ grep -E '2010-01-(0[4-9]|1[01])' date.txt
2010-01-04
2010-01-09
2010-01-10
2010-01-11

Une petite modification

 $ grep -E '2010-01-(0[4-9]|[12][0-9]|3[01])' date.txt
2010-01-04
2010-01-09
2010-01-10
2010-01-11
2010-01-20
2010-01-31
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
pcsystemd Messages postés 734 Statut Membre 23
 
Merci lami20j mais par contre je n'arrive pas a comprendre la logique de ce truc :
[12][0-9]


Pourquoi 12 seul entre [] ?

0
jipicy Messages postés 41342 Statut Modérateur 4 896
 
Re-

12 pour 1 ou 2
0-9 pour 0 ou 1 ou 2 ou 3 ou 4 etc. ou 8 ou 9
0
pcsystemd Messages postés 734 Statut Membre 23
 
Bin oui !!suis je bête. Merci jipicy
0