GREP et expressions régulieres

Résolu
pcsystemd Messages postés 702 Date d'inscription   Statut Membre Dernière intervention   -  
pcsystemd Messages postés 702 Date d'inscription   Statut Membre Dernière intervention   -
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 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 896
 
Salut,

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

;-))
0
lami20j Messages postés 21331 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   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 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 896 > lami20j Messages postés 21331 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention  
 
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 21331 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 570 > jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention  
 
Re,

Ben, tu as vu le mois et moi j'ai vu le jour ;-) (01 = janvier)
0
lami20j Messages postés 21331 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   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 702 Date d'inscription   Statut Membre Dernière intervention   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 21331 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   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 702 Date d'inscription   Statut Membre Dernière intervention   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 40842 Date d'inscription   Statut Modérateur Dernière intervention   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 702 Date d'inscription   Statut Membre Dernière intervention   23
 
Bin oui !!suis je bête. Merci jipicy
0