Question comparaison de string en BASH

Question comparaison de string en BASH - Codes et scripts - Linux et OS Alternatifs

Marsh Posté le 27-10-2006 à 22:10:22    

Je cherche une manière de faire une comparaison rapide d'un string avec case insensitive présentement j'utilise cette méthode :  
 
if [ $(echo "$VAR1"  | tr a-z A-Z ) = "STRING_RECHERCHÉ" ]
 then
  do stuff
fi
 
mais ce n'est pas très rapide.
 
Deuxième truc je cherche un moyen rapide de savoir si un string est dans un autre
 
exemple if sssssallosssssss = allo then.....
 
Je veux que le puisque les deux variables contienent le même mot je puisse extraire un résultat positif.
 
 
merci :bounce:  

Reply

Marsh Posté le 27-10-2006 à 22:10:22   

Reply

Marsh Posté le 27-10-2006 à 23:11:11    

pour la premiere question, je vois pas trop comment faire ca plus rapidement...
pour la deuxieme question, tu peux faire ca a coup de sed:
 
STR="ssssssallossssss"
 
TMP=`echo $STR | sed -e 's/^.*allo/allo/g' | sed -e 's/allo.*$/allo/g'`
 
if [ $TMP = $STR ]; then
  echo pas trouve
else
  echo trouve
fi


Message édité par P-Y le 27-10-2006 à 23:12:44
Reply

Marsh Posté le 27-10-2006 à 23:30:16    

Je me demande en passant par un fichier temporaire
faire un grep -i  


---------------
Penguin online qui ne fait que des conneries, et qui aime ça. Membre du http://www.fonacon.net/
Reply

Marsh Posté le 01-11-2006 à 17:48:08    

Code :
  1. tmp1=azeRTY
  2. tmp2=zEr
  3. echo "$tmp1" | grep -qi "$tmp2"
  4. if [ $? == 0 ]
  5. then
  6.   echo "Trouvé"
  7. else
  8.   echo "Pas trouvé"
  9. fi


Message édité par Toucouch le 02-11-2006 à 14:41:30
Reply

Marsh Posté le 02-11-2006 à 14:18:10    

Tu devrais étudier le man de expr.
Notamment il y a un expr match STRING PATTERN
 
Donc tu pourrais ptet tenter un :
expr match toto [tT][oO][tT][oO]
pour la comparaison insensitive.
 
La même option peut servir pour détecter une substring qq part dans une string
 
La forme abrégée (sous bash en tout cas) :
if [[ $STR == *allo* ]]


Message édité par Xavier_OM le 02-11-2006 à 14:34:30

---------------
Il y a autant d'atomes d'oxygène dans une molécule d'eau que d'étoiles dans le système solaire.
Reply

Marsh Posté le 02-11-2006 à 14:41:06    

Oups ! J'ai oublié l'option -i pour le grep ! (J'édite mon post précédent.)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed