Regex

Résolu
Bonjour,

Je souhaiterais faire un regex sur un grep pour repérer "Addinfo: *, *, 5 " (Le premier * correspond à un nombre de plusieurs chiffres, le second * est un chiffre.)

Naïvement je tente un $grep -E 'Addinfo: *, *, 5 ' et ça ne fonctionne pas... :'(

(Tout ça pour un script pour ceux qui se demanderaient: "Mais pourquoi diable poste t'il ça dans le forum programmation le bougre?...")

4 réponses

  1. Modérateur
    Salut,

    Comment se présente exactement ce que tu veux récupérer ?
    Il nous faut un exemple précis et concret dans le contexte..
    1. Je veux sortir toutes les traps snmp d'un log qui se composent de la manière suivante:

      plein d'information, Addinfo: 475, 2, 5 no (null).

      - Il y a forcément des données avant le Addinfo
      - Ensuite il y a ", Addinfo: "
      - Le nombre 475 est un champ variable, je suis même pas sur que ça soit un nombre à 3 chiffres systématiquement.
      - Le chiffre 2 est un champ variable de 1 chiffre systématiquement.
      - je ne sais pas si no (null) est systématique
      1. Modérateur
        Essaies ça :

        egrep -o 'Addinfo: [[:digit:]]{1,}, [[:digit:]]{1}, [[:digit:]]{1}'
        1. Je vais essayé mais j'ai réussi finalement, tu peux me dire si j'ai bon?

          grep -E 'Addinfo: [0123456789]*', [0123456789], 5 '

          Edit: tu peux m'expliquer ton regex plz! :)

          Merci!
          1. Modérateur
            [[:digit:]]{1,}
            Un chiffre ou plus

            [[:digit:]]{1}
            Un chiffre

            [[:digit:]]{1,4}
            De un à quatre chiffre(s)

            Pour info :

            [0-9]*
            Un chiffre ou plusieurs (ou aucun) dans l'intervalle 0 à 9

            [0-9][0-9]*
            Un chiffre ou plusieurs dans l'intervalle 0 à 9
          2. Ok merci! :)