GREP et expressions régulieres

Résolu/Fermé
pcsystemd Messages postés 691 Date d'inscription dimanche 27 novembre 2005 Statut Membre Dernière intervention 15 janvier 2024 - 2 févr. 2010 à 10:55
pcsystemd Messages postés 691 Date d'inscription dimanche 27 novembre 2005 Statut Membre Dernière intervention 15 janvier 2024 - 2 févr. 2010 à 14:56
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 jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 895
2 févr. 2010 à 11:00
Salut,

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

;-))
0
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 567
2 févr. 2010 à 11:02
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 jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 895 > lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019
2 févr. 2010 à 11:05
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 jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 567 > jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020
2 févr. 2010 à 13:12
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 jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 567
2 févr. 2010 à 11:01
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 691 Date d'inscription dimanche 27 novembre 2005 Statut Membre Dernière intervention 15 janvier 2024 22
2 févr. 2010 à 12:16
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 jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 567
2 févr. 2010 à 13:15
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 691 Date d'inscription dimanche 27 novembre 2005 Statut Membre Dernière intervention 15 janvier 2024 22
2 févr. 2010 à 14:21
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 jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 895
2 févr. 2010 à 14:25
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 691 Date d'inscription dimanche 27 novembre 2005 Statut Membre Dernière intervention 15 janvier 2024 22
2 févr. 2010 à 14:56
Bin oui !!suis je bête. Merci jipicy
0