Rechercher : dans
Par :

Vérifier une chaine de caractère shell unix

Dernière réponse le 22 fév 2008 à 16:42:08 samsel, le 22 fév 2008 à 11:32:51 
 Signaler ce message aux modérateurs

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

1

Darkito, le 22 fév 2008 à 11:58: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 \$
Tøƒ
A quand la matière "Comment faire une recherche Google ?" obligatoire dès la 6ème ?

Répondre à Darkito

2

jipicy, le 22 fév 2008 à 13:49:18

Salut,

echo "$chaine" | grep '[?!/\"^$]' >/dev/null &&  echo 'incorrect' || echo "correct"
;-))

Z'@+...che.
JP : Zen, my Nuggets ! ;-)
Le savoir n'est bon que s'il est partagé.

Répondre à jipicy

3

Darkito, le 22 fév 2008 à 13:52:06

Ça pose pas de problème avec le "!" ?
Chez moi ça met "event non found" Tøƒ
A quand la matière "Comment faire une recherche Google ?" obligatoire dès la 6ème ?

Répondre à Darkito

4

jipicy, le 22 fév 2008 à 15:58:44

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
;-))

Z'@+...che.
JP : Zen, my Nuggets ! ;-)
Le savoir n'est bon que s'il est partagé.

Répondre à jipicy

5

lami20j, le 22 fév 2008 à 16:14:30

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:~$


lami20j

Répondre à lami20j

6

 samsel, le 22 fév 2008 à 16:42:08

Merci les amis :) ça marceh trés bien chez moi ;)

Répondre à samsel