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 :

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. Modérateur
    Salut,

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

    ;-))
    0
    1. Modérateur
      Salut,

      au 2010-01-11
      Il n'y a pas 12 ;-DDD, à moins que tu es sur le coup d'anticipation ;-)
      0
    2. 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) ;-((
      0
    3. Modérateur
      @jipicyRe,

      Ben, tu as vu le mois et moi j'ai vu le jour ;-) (01 = janvier)
      0
  2. Modérateur
    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
    1. Merci a vous deux c'est ok. Bien vue jipicy pour le 12 puisque je dois allé jusqu'au 31 . ;-)
      0
      1. Modérateur
        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
        1. 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. Modérateur
            Re-

            12 pour 1 ou 2
            0-9 pour 0 ou 1 ou 2 ou 3 ou 4 etc. ou 8 ou 9
            0
        2. Bin oui !!suis je bête. Merci jipicy
          0