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
    Essaies ça :

    egrep -o 'Addinfo: [[:digit:]]{1,}, [[:digit:]]{1}, [[:digit:]]{1}'
    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. 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! :)