Vérifier une chaine de caractère shell unix

Bonjour,
Comment savoir si une chaine de caractère contient des caractères comme ?!,\/"^$ sauf le point?
chaine.fee => chaine correcte
chaine,dd => chaine incorrecte
chaine!dd => chaine incorrecte
..

Merci
Configuration: Windows XP
Internet Explorer 7.0

4 réponses

  1. Merci les amis :) ça marceh trés bien chez moi ;)
    0
    1. Modérateur
      Salut,

      pourquoi pas une classe de caractères complementée?

      lami20j@debserv:~$ echo 'tatatiti' | grep -E '[^a-zA-Z0-9_]' && echo incorrect || echo correct                                                               correct
      lami20j@debserv:~$ echo 'tata?titi' | grep -E '[^a-zA-Z0-9_]' && echo incorrect || echo correct
      tata?titi
      incorrect
      lami20j@debserv:~$

      1
      1. Modérateur
        Salut,
        echo "$chaine" | grep '[?!/\"^$]' >/dev/null &&  echo 'incorrect' || echo "correct"
        ;-))
        1
        1. Ça pose pas de problème avec le "!" ?
          Chez moi ça met "event non found"
          0
        2. Modérateur
          @DarkitoBen pas chez moi (mais à condition d'entourer l'expression par des quotes simples et non par des quotes doubles (guillemets) sinon ça foire) :
          $ echo 'tat\ati.ti' | grep '[?!/\"^$]' >/dev/null &&  echo 'incorrect' || echo "correct"
          incorrect
          $ echo 'tatati.ti' | grep '[?!/\"^$]' >/dev/null &&  echo 'incorrect' || echo "correct"
          correct
          $
          
          $ echo 'tatati.ti' | grep "[?!/\"^$]" >/dev/null &&  echo 'incorrect' || echo "correct"
          -bash: !/\"^$]": event not found
          ;-))
          0
      2. Bonjour,
        c'est possible avec la commande grep et les expressions régulières.
        En faisant un pipe sur le nombre de ligne, tu as 1 si c'est faux et 0 si c'est correct.
        
        Darkito >echo 'tata.titi' | grep '[?'!'/\"^$]' | wc -l
        0
        Darkito >echo 'tata?titi' | grep '[?'!'/\"^$]' | wc -l
        1
        Darkito >echo 'tata'!'titi' | grep '[?'!'/\"^$]' | wc -l
        1
        Darkito >echo 'tata/titi' | grep '[?'!'/\"^$]' | wc -l
        1
        Darkito >echo 'tata\titi' | grep '[?'!'/\"^$]' | wc -l
        1
        Darkito >echo 'tata"titi' | grep '[?'!'/\"^$]' | wc -l
        1
        Darkito >echo 'tata^titi' | grep '[?'!'/\"^$]' | wc -l
        1
        Darkito >echo 'tata\$titi' | grep '[?'!'/\"^$]' | wc -l
        1
        
        On est obligé de mette '!' dans l'expression régulière car ! est un caractère réservé.
        de même, dans l'appel de la variable pour le test, il faut mettre \$
        
        0