GNU/Linux >> Tutoriels Linux >  >> Linux

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

Manipulations de quelques chaînes !

Si vous êtes familier avec les variables dans bash, vous savez déjà qu'il n'y a pas de types de données distincts pour string, int, etc. Tout est une variable.

Mais cela ne signifie pas que vous n'avez pas de fonctions de manipulation de chaînes.

Dans le chapitre précédent, vous avez appris les opérateurs arithmétiques dans Bash. Dans ce chapitre, vous apprendrez à manipuler des chaînes à l'aide de diverses opérations sur les chaînes. Vous apprendrez à obtenir la longueur d'une chaîne, à concaténer des chaînes, à extraire des sous-chaînes, à remplacer des sous-chaînes et bien plus encore !

Obtenir la longueur de la chaîne

Commençons par obtenir la longueur d'une chaîne en bash.

Une chaîne n'est rien d'autre qu'une séquence (tableau) de caractères. Créons une chaîne nommée distro et initialisez sa valeur à "Ubuntu ”.

distro="Ubuntu"

Maintenant, pour obtenir la longueur de la chaîne de distribution, il vous suffit d'ajouter # avant le nom de la variable. Vous pouvez utiliser l'instruction echo suivante :

[email protected]:~/scripts$ echo ${#distro}
6

Notez que la commande echo sert à imprimer la valeur. {#string} est ce qui donne la longueur de la chaîne.

Concaténation de deux chaînes

Vous pouvez ajouter une chaîne à la fin d'une autre chaîne; ce processus est appelé concaténation de chaînes.

Pour illustrer, créons d'abord deux chaînes str1 etstr2 comme suit :

str1="hand"
str2="book"

Vous pouvez maintenant joindre les deux chaînes et attribuer le résultat à une nouvelle chaîne nommée str3 comme suit :

str3=$str1$str2

Cela ne peut pas être plus simple que cela, n'est-ce pas ?

Rechercher des sous-chaînes


Vous pouvez trouver la position (index) d'une lettre ou d'un mot spécifique dans une chaîne. Pour illustrer, créons d'abord une chaîne nommée str comme suit :

str="Bash is Cool"

Vous pouvez maintenant obtenir la position spécifique (index) de la sous-chaîne cool. Pour ce faire, utilisez le expr commande :

[email protected]:~/scripts$ word="Cool"
[email protected]:~/scripts$ expr index "$str" "$word"
9

Le résultat 9 est l'index où le mot "Cool" commence dans le str chaîne.

J'évite délibérément d'utiliser des instructions conditionnelles telles que if, else parce que dans cette série bash pour débutants, les instructions conditionnelles seront couvertes plus tard.

Extraire des sous-chaînes

Vous pouvez également extraire des sous-chaînes d'une chaîne ; c'est-à-dire que vous pouvez extraire une lettre, un mot ou quelques mots d'une chaîne.

Pour démontrer, créons d'abord une chaîne nommée foss comme suit :

foss="Fedora is a free operating system"

Supposons maintenant que vous vouliez extraire le premier mot "Fedora" dans le foss corde. Vous devez spécifier la position de départ (index) de la sous-chaîne souhaitée et le nombre de caractères à extraire.

Par conséquent, pour extraire la sous-chaîne "Fedora", vous utiliserez 0 comme position de départ et vous extrairez 6 caractères de la position de départ :

[email protected]:~/scripts$ echo ${foss:0:6}
Fedora

Notez que la première position dans une chaîne est zéro, tout comme dans le cas des tableaux en bash. Vous pouvez également spécifier uniquement la position de départ d'une sous-chaîne et omettre le nombre de caractères. Dans ce cas, tout, de la position de départ à la fin de la chaîne, sera extrait.

Par exemple, pour extraire la sous-chaîne "système d'exploitation libre" du foss corde; il suffit de spécifier la position de départ 12 :

[email protected]:~/scripts$ echo ${foss:12}
free operating system

Remplacement des sous-chaînes

Vous pouvez également remplacer une sous-chaîne par une autre sous-chaîne ; par exemple, vous pouvez remplacer "Fedora" par "Ubuntu" dans le foss chaîne comme suit :

[email protected]:~/scripts$ echo ${foss/Fedora/Ubuntu}
Ubuntu is a free operating system

Faisons un autre exemple, remplaçons la sous-chaîne "free" par "popular":

[email protected]:~/scripts$ echo ${foss/free/popular}
Fedora is a popular operating system

Puisque vous imprimez simplement la valeur avec la commande echo, la chaîne d'origine n'est pas vraiment modifiée.

Suppression de sous-chaînes

Vous pouvez également supprimer des sous-chaînes. Pour illustrer, créons d'abord une chaîne nommée fact comme suit :

fact="Sun is a big star"

Vous pouvez maintenant supprimer la sous-chaîne "big" de la chaîne fact :

[email protected]:~/scripts$ echo ${fact/big}
Sun is a star

Créons une autre chaîne nommée cell :

cell="112-358-1321"

Supposons maintenant que vous souhaitiez supprimer tous les tirets de la cellule corde; l'instruction suivante supprimera uniquement la première occurrence de tiret dans la cellule chaîne :

[email protected]:~/scripts$ echo ${cell/-}
112358-1321

Pour supprimer toutes les occurrences de tiret de la cellule chaîne, vous devez utiliser des doubles barres obliques comme suit :

[email protected]:~/scripts$ echo ${cell//-}
1123581321

Notez que vous utilisez des instructions d'écho et que la chaîne de cellule est donc intacte et non modifiée ; vous affichez simplement le résultat souhaité !

Pour modifier la chaîne, vous devez réattribuer le résultat à la chaîne comme suit :

[email protected]:~/scripts$ echo $cell
112-358-1321
[email protected]:~/scripts$ cell=${cell//-}
[email protected]:~/scripts$ echo $cell
1123581321

Conversion des lettres majuscules et minuscules dans une chaîne

Vous pouvez également convertir une chaîne en lettres minuscules ou majuscules. Commençons par créer deux chaînes nommées légende et acteur :

legend="john nash"
actor="JULIA ROBERTS"

Vous pouvez convertir toutes les lettres de la légende chaîne en majuscule :

[email protected]:~/scripts$ echo ${legend^^}
JOHN NASH

Vous pouvez également convertir toutes les lettres de la chaîne d'acteurs en minuscules :

[email protected]:~/scripts$ echo ${actor,,}
julia roberts

Vous pouvez également convertir uniquement le premier caractère de la légende chaîne en majuscule comme suit :

[email protected]:~/scripts$ echo ${legend^}
John nash

De même, vous ne pouvez convertir que le premier caractère de l'acteur chaîne en minuscules comme suit :

[email protected]:~/scripts$ echo ${actor,}
jULIA ROBERTS

Vous pouvez également modifier certains caractères d'une chaîne en majuscules ou en minuscules ; par exemple, vous pouvez changer les lettres j et n en majuscule dans la légende chaîne comme suit :

[email protected]:~/scripts$ echo ${legend^^[jn]}
JohN Nash

Génial! Ceci nous amène à la fin de ce didacticiel de la série bash pour débutants. Téléchargez le PDF ci-dessous et mettez en pratique ce que vous venez d'apprendre.

Bash Chapter 6 Practice QuestionsProblems et leur solution pour mettre en pratique ce que vous venez d'apprendre dans ce chapitreBash-Chapter-6-Practice-Questions-Linux-Handbook.pdf28 KB

J'espère que vous avez apprécié la manipulation de chaînes dans bash et consultez le chapitre suivant car vous apprendrez à ajouter des compétences de prise de décision à vos scripts bash !


Linux
  1. Effectuer des opérations d'écriture atomique dans un fichier dans Bash ?

  2. Bash Beginner Series #9 :Utiliser des fonctions dans Bash

  3. Bash Beginner Series #8 :Boucles dans Bash

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

  5. utiliser random pour générer une chaîne aléatoire dans bash

Bash Beginner Series #1 :Créez et exécutez votre premier script shell Bash

Bash Beginner Series #5 :Utilisation des opérateurs arithmétiques dans les scripts Bash

Bash Beginner Series #4 :Utiliser des tableaux dans Bash

Bash Beginner Series #3 :Passer des arguments aux scripts Bash

Bash Beginner Series #7 :Prise de décision avec des instructions If Else et Case Statements

Bash Beginner Series #10 :Automatisation avec Bash