GREP et expressions régulieres
Résolu
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 :
mais le resultat retourné s'arrête a 2010-01-09 et si je fais cela :
je n'ai rien.
Comment faire?
Merci
--
L'accès au savoir est la première liberté que chaque homme devrait avoir.
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
--
L'accès au savoir est la première liberté que chaque homme devrait avoir.
Configuration: Linux Mozilla 1.9.0.15
6 réponses
-
ModérateurSalut,
egrep -o '2010-01-(0[1-9]|1[12])'
;-))
-
-
Modérateur@lami20jSalut,
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) ;-((
-
Modérateur
-
-
ModérateurSalut,
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
-
Merci a vous deux c'est ok. Bien vue jipicy pour le 12 puisque je dois allé jusqu'au 31 . ;-)
-
ModérateurRe,
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
-
Merci lami20j mais par contre je n'arrive pas a comprendre la logique de ce truc :
[12][0-9]
Pourquoi 12 seul entre [] ?
-
Bin oui !!suis je bête. Merci jipicy