Shell comparer 2 chaines de caractère

julien -  
 julien -
Bonjour a tous,

j'ai 2 chaines de caractères, et je voudrais savoir si l'une contient au moins l'un des caractères de l'autre. j'ai bricolé un truc avec grep, mais c'est pourri ça me prends toute la chaine comme référence, et pas au moins l'un des caractères.

merci d'avance

2 réponses

  1. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
     
    hello
    $ s1="abcdefg" ; s2="123456"
    $ [[ "$s1" =~ [$s2] ]] && echo  contient || echo ne contient pas
    ne contient pas
    $ s2="1234c56"
    $ [[ "$s1" =~ [$s2] ]] && echo  contient || echo ne contient pas
    contient
    $
    
    3
    1. julien
       
      merci ça marche du tonnerre !!! le pire c que j'ai déja pifé le =~ mais j'ai pas penser du tout au " " et au [ ] autour des variables. ça sert a quoi au juste?
      0
    2. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
       
      sans "" l'expression à droite est une expression regulière.donc [$s2] soit [123456] va tester chaque caractère individuellement, 1 ou 2 ou 3 ...
      0
    3. julien
       
      ok merci encore ^^
      0
  2. Utilisateur anonyme
     
    salut,

    comme ça ?
    $ chaine=abc
    $ echo "$chaine" | sed 's/./&\\|/g; s/\\|$//'
    a\|b\|c
    $ regexp=$(echo "$chaine" | sed 's/./&\\|/g; s/\\|$//')
    $ echo "ohnonon" | grep "$regexp" && echo ouais || echo non
    non
    $ echo "blabla" | grep "$regexp" >/dev/null 2>&1 && echo ouais || echo non
    ouais
    0