Vérifier si la chaîne contient une sous-chaîne dans Bash
-
Utilisez l’énoncé conditionnel
case(méthode 1) -
Utiliser des caractères génériques dans l’instruction
if(méthode 2) -
Utilisez la commande
grepde Bash (Méthode 3) -
Utilisez l’opérateur Regex (
~=) (Méthode 4)
Trouver une sous-chaîne à partir d’une chaîne est l’opération la plus fréquemment utilisée avec des chaînes. Il existe de nombreuses façons d’effectuer cette tâche.
Dans cet article, nous verrons plusieurs implémentations basées sur des scripts Bash pour déterminer si une chaîne donnée contient ou non une sous-chaîne particulière.
Utilisez l’énoncé conditionnel case (méthode 1)
Le case est une instruction conditionnelle dans bash et peut être utilisée pour implémenter un bloc conditionnel dans le script. Cette instruction peut être utilisée pour trouver une sous-chaîne dans bash.
Scénario:
#!/bin/bash
str='This is a bash tutorial'
substr='bash'
case $str in
*"$substr"*)
echo "str contains the substr"
;;
esac
Nous avons 2 chaînes, str et substr. Nous avons appliqué une instruction case pour déterminer si str contient substr ou non.
Production:

Utiliser des caractères génériques dans l’instruction if (méthode 2)
Nous pouvons également trouver une sous-chaîne à partir d’une chaîne en utilisant des caractères génériques dans l’instruction if. Le moyen le plus simple de trouver une sous-chaîne consiste à placer le symbole générique astérisque (*) autour de la sous-chaîne et à le comparer avec la chaîne réelle.
Scénario:
#!/bin/bash
str='This is a bash tutorial'
substr='tutorial'
if [[ "$str" == *"$substr"* ]]; then
echo "String contains the sunstring"
else
echo "String does'nt contains the substring"
fi
Production:

Utilisez la commande grep de Bash (Méthode 3)
La commande grep est également utilisée pour rechercher quelque chose dans un fichier ou une chaîne. Il a une option -q, qui indique à la commande grep de ne pas afficher la sortie ; retourne true ou false.
Scénario:
#!/bin/bash
str='This is a bash tutorial'
substr='tutorial'
if grep -q "$substr" <<< "$str"; then
echo "String contains the substring"
fi
Production:

Utilisez l’opérateur Regex (~=) (Méthode 4)
Il existe un autre opérateur appelé opérateur regex (~=) avec lequel on peut comparer deux chaînes et savoir si une chaîne contient une sous-chaîne.
Scénario:
#!/bin/bash
str='This is a bash tutorial'
substr='bash'
if [[ "$str" =~ .*"$substr".* ]]; then
echo "String contains the substring"
fi
Notez que dans l’instruction conditionnelle, l’opérateur regex fait de la chaîne de droite une expression régulière et le symbole .* signifie comparer 0 ou plusieurs occurrences d’une sous-chaîne dans la chaîne.
Production:

Par conséquent, vous pouvez voir plusieurs façons de trouver une sous-chaîne à partir d’une chaîne.
Husnain is a professional Software Engineer and a researcher who loves to learn, build, write, and teach. Having worked various jobs in the IT industry, he especially enjoys finding ways to express complex ideas in simple ways through his content. In his free time, Husnain unwinds by thinking about tech fiction to solve problems around him.
LinkedIn