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
--
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

  1. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    Salut,

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

    ;-))
    0
    1. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
       
      Salut,

      au 2010-01-11
      Il n'y a pas 12 ;-DDD, à moins que tu es sur le coup d'anticipation ;-)
      0
      1. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898 > lami20j Messages postés 21506 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
      2. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571 > 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
  2. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    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
  3. 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
  4. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. 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
    1. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
       
      Re-

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