Vérifier si la chaîne contient une sous-chaîne dans Bash

Muhammad Husnain 30 janvier 2023
  1. Utilisez l’énoncé conditionnel case (méthode 1)
  2. Utiliser des caractères génériques dans l’instruction if (méthode 2)
  3. Utilisez la commande grep de Bash (Méthode 3)
  4. Utilisez l’opérateur Regex (~=) (Méthode 4)
Vérifier si la chaîne contient une sous-chaîne dans Bash

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:

Cas d’utilisation Instruction conditionnelle

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:

Utiliser des caractères génériques dans l’instruction if

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:

Utiliser la commande grep de Bash

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:

Utiliser l&rsquo;opérateur Regex

Par conséquent, vous pouvez voir plusieurs façons de trouver une sous-chaîne à partir d’une chaîne.

Muhammad Husnain avatar Muhammad Husnain avatar

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

Article connexe - Bash Substring