Shell comparer 2 chaines de caractère

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. Contributeur
    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. 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. Contributeur
      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. ok merci encore ^^
      0
  2. 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