Vérifier une chaine de caractère shell unix

Fermé
samsel - 22 févr. 2008 à 11:32
 samsel - 22 févr. 2008 à 16:42
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
A voir également:

4 réponses

jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 895
22 févr. 2008 à 13:49
Salut,
echo "$chaine" | grep '[?!/\"^$]' >/dev/null &&  echo 'incorrect' || echo "correct"
;-))
1
Darkito Messages postés 1191 Date d'inscription vendredi 7 décembre 2007 Statut Membre Dernière intervention 26 mai 2010 545
22 févr. 2008 à 13:52
Ça pose pas de problème avec le "!" ?
Chez moi ça met "event non found"
0
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 895 > Darkito Messages postés 1191 Date d'inscription vendredi 7 décembre 2007 Statut Membre Dernière intervention 26 mai 2010
22 févr. 2008 à 15:58
Ben 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
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 567
22 févr. 2008 à 16:14
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
Darkito Messages postés 1191 Date d'inscription vendredi 7 décembre 2007 Statut Membre Dernière intervention 26 mai 2010 545
22 févr. 2008 à 11:58
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
Merci les amis :) ça marceh trés bien chez moi ;)
0