GNU/Linux >> Tutoriels Linux >  >> Linux

Script Bash - Manipulation de chaînes

La manipulation de chaînes est l'un des concepts fondamentaux des scripts bash. En programmation, les chaînes sont l'un des types de données qui sont une séquence ordonnée de caractères. Il est important que vous sachiez comment créer et manipuler des chaînes dans bash. Dans ce guide, nous apprendrons la manipulation de chaînes dans les scripts shell Bash avec des exemples simples. Vous serez à l'aise avec les chaînes bash à la fin de cet article.

Affectation des variables

Les chaînes peuvent être affectées à une variable et utilisées ultérieurement dans le script pour un traitement ultérieur. Par exemple, je crée une variable nommée "GREET_USER" et l'impression de la chaîne sur le terminal.

$ GREET_USER="Hello, Thanks for visiting OSTechnix"
$ echo "$GREET_USER"

Bash n'a pas de système de type fort, donc si vous affectez une valeur à une variable, elle sera traitée comme un type de chaîne. Vous pouvez créer des chaînes avec des guillemets simples, doubles ou sans guillemets.

Il y a une différence entre les guillemets simples et les guillemets doubles dans bash. Les guillemets simples empêchent l'expansion des variables et des commandes tandis que les guillemets doubles le prennent en charge. Jetez un oeil à l'exemple ci-dessous.

J'ai créé une autre variable nommée "SITE_NAME" et il est utilisé dans le "GREET_USER" variable. Entre guillemets doubles, la variable sera développée et entre guillemets simples, la variable ne sera pas développée.

$ SITE_NAME="OSTechnix"
## DOUBLE QUOTES

$ GREET_USER="Hello, Thanks for visiting ${SITE_NAME}"
$ echo "$GREET_USER"
# SINGLE QUOTES

$ GREET_USER='Hello, Thanks for visiting ${SITE_NAME}'
$ echo "$GREET_USER"

Longueur de la chaîne

Pour trouver la longueur de la chaîne, vous pouvez utiliser le # symbole. Trouver la longueur de la chaîne sera utile dans certains cas où vous devez écrire une logique basée sur le nombre de chaînes.

$ echo "${#SITE_NAME}"

Convertir des chaînes en tableau

Il existe de nombreuses façons de convertir le type de données chaîne en type tableau. Le moyen le plus simple serait de placer la chaîne entre accolades.

$ ARR_TYPE=($GREET_USER)
$ echo ${ARR_TYPE[@]}
$ for element in ${ARR_TYPE[@]}; do
  echo $element
done

La deuxième méthode consisterait à diviser la chaîne et à la stocker sous forme de tableau en fonction du délimiteur utilisé dans la chaîne. Dans l'exemple précédent, l'espace est utilisé comme séparateur de champs (IFS) qui est l'IFS par défaut dans bash. Par exemple, si vous avez une chaîne séparée par des virgules, vous pouvez définir l'IFS sur une virgule et créer un tableau. Pour plus de détails sur IFS, consultez le guide suivant :

  • Scripts bash :boucle While et Until expliquée à l'aide d'exemples
$ STR_TO_ARR="column1,column2,column3"
$ IFS=","
$ ARR=(${STR_TO_ARR})
$ for element in ${ARR[@]}; do echo $element; done
$ echo "${ARR[@]}"

Conversion de casse

Bash a un support intégré pour la conversion de la casse des chaînes. Vous devez utiliser des caractères spéciaux à la fin de la chaîne pour la conversion de casse comme indiqué ci-dessous.

# SPECIAL CHARACTERS

,, ==> Converts an entire string to lowercase
^^ ==> Converts an entire string to Uppercase
~~ ==> Transpose Case
,  ==> Converts first letter alone to lowercase
^  ==> Converts first letter alone to uppercase
# ---- LOWER TO UPPER CASE ----
$ L_TO_U="welcome to ostechnix"
$ echo ${L_TO_U^^}


# ---- UPPER TO LOWER CASE ----
$ U_TO_L="WELCOME TO OSTECHNIX"
$ echo ${L_TO_U,,}


# ---- TRANSPOSE CASE ----
$ TRS_CASE="Welcome To OsTechnix"
$ echo ${TRS_CASE~~}


# ---- FIRST LETTER TO LOWERCASE ----
$ F_TO_L="OSTECHNIX"
$ echo ${F_TO_L,}


# ---- FIRST LETTER TO UPPERCASE ----
$ F_TO_U="ostechnix"
$ echo ${F_TO_U^}

Vous pouvez également utiliser la correspondance de modèles regex et convertir la casse pour les correspondances.

$ L_TO_U="welcome to ostechnix"
$ echo ${L_TO_U^^[toe]}

Concaténation de chaînes

Vous pouvez concaténer plusieurs chaînes en plaçant les chaînes les unes après les autres. Selon la manière dont vos chaînes sont concaténées, vous pouvez également ajouter des caractères supplémentaires.

$ SITE_NAME="OSTechnix"
$ MESSAGE="Welcome to"
$ echo "${MESSAGE} {SITE_NAME}"

Découpage de chaînes

Le découpage de chaîne est un moyen d'extraire une partie d'une chaîne à l'aide de la position d'index. Chaque caractère de la chaîne se voit attribuer une valeur entière avec laquelle peut être utilisée pour saisir une partie de la chaîne. La valeur de l'index est comprise entre 0 et N. Vous trouverez ci-dessous la syntaxe du découpage.

{STRING:START:LENGTH}

START => Starting Index Position
LENGTH => Length of the String from position START

Si LENGTH n'est pas spécifié, la chaîne sera imprimée jusqu'à la fin à partir de la position d'index START .

$ SITE_NAME="OSTechnix"
$ echo ${SITE_NAME:2}

Avec LENGTH donné, il imprimera la sous-chaîne à partir de la position d'index START et combien de caractères doivent être imprimés.

$ echo ${SITE_NAME:2:2}

Vous pouvez également inverser la chaîne de plusieurs façons. Le moyen le plus simple est d'utiliser la commande rev. Si vous souhaitez le faire de manière bash sans utiliser de commande externe, vous devez écrire la logique manuellement.

$ echo ${SITE_NAME} | rev

Rechercher et remplacer

Il existe un moyen natif de rechercher et de remplacer des caractères dans une chaîne sans utiliser de commande externe comme sed ou awk .

Pour remplacer la première occurrence de sous-chaîne, utilisez la syntaxe suivante.

{STRING/X/Y}
The first occurrence of X will be replaced by Y.

Jetez un oeil à l'exemple ci-dessous où la première occurrence du mot "linux" est remplacé par LINUX en majuscule.

$ MESSAGE="linux is awesome to work with.
Ubuntu is one of the powerful linux distribution"
$ echo $MESSAGE
$ echo ${MESSAGE/linux/LINUX}

Pour remplacer toutes les occurrences du mot, utilisez la syntaxe suivante.

$ echo ${MESSAGE//linux/LINUX}

Supprimer la sous-chaîne

Il existe différentes manières de supprimer une sous-chaîne de la chaîne. Utilitaires externes comme sed , awk , ou tr peut être utilisé ou il existe un moyen de le faire de manière native bash.

Dans le mode natif bash, l'expansion des paramètres est utilisée pour supprimer la sous-chaîne. Vous devez utiliser le % symbole suivi d'un motif à supprimer. Cela correspondra au dernier motif trouvé et le supprimera.

Par exemple, je souhaite supprimer les mots qui viennent après le point (. ) la syntaxe suivante doit être utilisée. Ici tout ce qui vient après le point (. ) sera supprimé. Dans ce cas, le dernier modèle correspondant .com est supprimé.

$ SITE_NAME="www.ostechnix.com"
$ echo ${SITE_NAME%.*}

Pour faire correspondre la première occurrence du modèle, utilisez le double pourcentage symbole

$ SITE_NAME="www.ostechnix.com"
$ echo ${SITE_NAME%%.*}

Vous pouvez également utiliser le # ou ## symbole qui fera une sorte de suppression inverse. Avec un seul # symbole, le premier motif est mis en correspondance et tout ce qui précède le motif est supprimé.

$ SITE_NAME="www.ostechnix.com"
$ echo ${SITE_NAME#*.}

Avec le double ## symbole, le dernier motif est mis en correspondance et tout ce qui précède le motif est supprimé.

$ SITE_NAME="www.ostechnix.com"
$ echo ${SITE_NAME##*.}

Conclusion

Dans cet article, nous avons vu comment créer des chaînes dans bash et différentes manières de manipuler les chaînes. Pour vous familiariser avec la manipulation des chaînes bash, lancez le terminal et commencez à pratiquer les exemples fournis dans ce guide. Si vous avez des commentaires ou des questions, veuillez utiliser la section des commentaires ci-dessous.

Guides de script bash :

  • Scripts bash – Explication de la commande Printf à l'aide d'exemples
  • Scripts bash – Tableau indexé expliqué à l'aide d'exemples
  • Scripts bash - Tableau associatif expliqué avec des exemples
  • Scripts bash – Explication de la boucle For avec des exemples
  • La redirection bash expliquée avec des exemples
  • Scripts bash – Variables expliquées à l'aide d'exemples
  • Scripts bash – Fonctions expliquées à l'aide d'exemples
  • La commande Bash Echo expliquée avec des exemples sous Linux
  • Tutoriel Bash Heredoc pour les débutants

Linux
  1. Script bash (I)

  2. Comment comparer des chaînes dans les scripts shell bash

  3. Comment diviser une chaîne dans un script bash

  4. Exemples de manipulation de chaînes Bash - Longueur, sous-chaîne, rechercher et remplacer

  5. Convertir une chaîne de texte en bash en tableau

Script Bash - Instructions conditionnelles

Bash Scripting - Déclaration de cas

Script bash (II)

Script bash (III)

Interfaces utilisateur avec dialogue. Script bash (IV)

Bash Beginner Series #6 :Opérations sur les chaînes dans Bash