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 !