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
grep
de 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