Android

Comment vérifier si une chaîne contient une sous-chaîne dans bash

Ubuntu - Linux : Gestion des fichiers avec la ligne de commandes

Ubuntu - Linux : Gestion des fichiers avec la ligne de commandes

Table des matières:

Anonim

L'une des opérations les plus courantes lorsque vous travaillez avec des chaînes dans Bash est de déterminer si une chaîne contient ou non une autre chaîne., nous allons vous montrer plusieurs façons de vérifier si une chaîne contient une sous-chaîne.

Utilisation de caractères génériques

L'approche la plus simple consiste à entourer la sous-chaîne de symboles génériques astérisque (astérisque) * et à la comparer avec la chaîne. Le caractère générique est un symbole utilisé pour représenter zéro, un ou plusieurs caractères.

Si le test renvoie true , la sous-chaîne est contenue dans la chaîne.

Dans l'exemple ci-dessous, nous utilisons l'instruction if et l'opérateur d'égalité ( == ) pour vérifier si la sous-chaîne SUB est trouvée dans la chaîne STR :

#!/bin/bash STR='GNU/Linux is an operating system' SUB='Linux' if]; then echo "It's there." fi

Une fois exécuté, le script affichera:

It's there.

Utilisation de l'opérateur de cas

Au lieu d'utiliser l'instruction if, vous pouvez également utiliser l'instruction case pour vérifier si une chaîne inclut ou non une autre chaîne.

#!/bin/bash STR='GNU/Linux is an operating system' SUB='Linux' case $STR in *"$SUB"*) echo -n "It's there.";; esac

Utilisation de l'opérateur Regex

Une autre option pour déterminer si une sous-chaîne spécifiée se produit dans une chaîne est d'utiliser l'opérateur regex =~ . Lorsque cet opérateur est utilisé, la chaîne de droite est considérée comme une expression régulière.

La période suivie d'un astérisque .* Correspond à zéro ou plusieurs occurrences de n'importe quel caractère à l'exception d'un caractère de nouvelle ligne.

#!/bin/bash STR='GNU/Linux is an operating system' SUB='Linux' if]; then echo "It's there." fi

Le script fera écho aux éléments suivants:

It's there.

Utilisation de Grep

La commande grep peut également être utilisée pour rechercher des chaînes dans une autre chaîne.

Dans l'exemple suivant, nous passons la chaîne $STR comme entrée à grep et vérifions si la chaîne $SUB se trouve dans la chaîne d'entrée. La commande renverra true ou false selon le cas.

#!/bin/bash STR='GNU/Linux is an operating system' SUB='Linux' if grep -q "$SUB" <<< "$STR"; then echo "It's there" fi

L'option -q dit à grep d'être silencieux, d'omettre la sortie.

Conclusion

Vérifier si une chaîne contient une sous-chaîne est l'une des opérations les plus élémentaires et les plus fréquemment utilisées dans les scripts Bash.

Après avoir lu ce didacticiel, vous devez avoir une bonne compréhension de la façon de tester si une chaîne inclut une autre chaîne. Vous pouvez également utiliser d'autres commandes comme awk ou sed pour les tests.

terminal bash