GREP et expressions régulieres [Résolu/Fermé]

Signaler
Messages postés
588
Date d'inscription
dimanche 27 novembre 2005
Statut
Membre
Dernière intervention
10 mai 2021
-
Messages postés
588
Date d'inscription
dimanche 27 novembre 2005
Statut
Membre
Dernière intervention
10 mai 2021
-
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

Messages postés
40805
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 862
Salut,

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

;-))
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 543
Salut,

au 2010-01-11
Il n'y a pas 12 ;-DDD, à moins que tu es sur le coup d'anticipation ;-)
Messages postés
40805
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 862 >
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019

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) ;-((
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 543 >
Messages postés
40805
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020

Re,

Ben, tu as vu le mois et moi j'ai vu le jour ;-) (01 = janvier)
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 543
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
Messages postés
588
Date d'inscription
dimanche 27 novembre 2005
Statut
Membre
Dernière intervention
10 mai 2021
18
Merci a vous deux c'est ok. Bien vue jipicy pour le 12 puisque je dois allé jusqu'au 31 . ;-)
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 543
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
Messages postés
588
Date d'inscription
dimanche 27 novembre 2005
Statut
Membre
Dernière intervention
10 mai 2021
18
Merci lami20j mais par contre je n'arrive pas a comprendre la logique de ce truc :
[12][0-9]


Pourquoi 12 seul entre [] ?

Messages postés
40805
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 862
Re-

12 pour 1 ou 2
0-9 pour 0 ou 1 ou 2 ou 3 ou 4 etc. ou 8 ou 9
Messages postés
588
Date d'inscription
dimanche 27 novembre 2005
Statut
Membre
Dernière intervention
10 mai 2021
18
Bin oui !!suis je bête. Merci jipicy