Comment manipuler des chaînes dans Bash sous Linux

0
168
fatmawati achmad zaenuri/Shutterstock.com

S'il y a une chose dont Linux est bien équipé, ce sont des utilitaires pour manipuler les chaînes. Mais il y a aussi tout un ensemble de fonctionnalités intégrées directement dans le shell Bash. Voici comment il est utilisé.

Manipulation de chaînes

L'écosystème Linux regorge d'outils fantastiques pour travailler avec du texte et des chaînes. Ceux-ci incluent awk, grep, sed et cut. Pour toute dispute de texte lourd, ceux-ci devraient être vos choix préférés.

Parfois cependant, il est pratique d'utiliser les fonctionnalités intégrées du shell, en particulier lorsque vous écrivez un script court et simple. Si votre script va être partagé avec d'autres personnes et qu'il va s'exécuter sur leurs ordinateurs, l'utilisation de la fonctionnalité standard de Bash signifie que vous n'avez pas à vous interroger sur la présence ou la version de l'un des autres utilitaires.

Si vous avez besoin de la puissance des utilitaires dédiés, utilisez-les par tous les moyens. C'est pour ça qu'ils sont là. Mais souvent, votre script et Bash peuvent faire le travail par eux-mêmes.

Parce qu'ils sont intégrés à Bash, vous pouvez les utiliser dans des scripts ou sur la ligne de commande. Les utiliser dans une fenêtre de terminal est un moyen rapide et pratique de prototyper vos commandes et de perfectionner la syntaxe. Cela évite le cycle d'édition, de sauvegarde, d'exécution et de débogage.

Créer et travailler avec des variables de chaîne

Pour déclarer une variable et lui attribuer une chaîne, il suffit de nommer la variable, d'utiliser le signe égal = et de fournir la chaîne. S'il y a des espaces dans votre chaîne, placez-la entre guillemets simples ou doubles. Assurez-vous qu'il n'y a pas d'espace de part et d'autre du signe égal.

my_string=”Bonjour, How-To Geek World.” echo $ma_chaîne

Une fois que vous avez créé une variable, ce nom de variable est ajouté à la liste des mots de complétion de tabulation du shell. Dans cet exemple, en tapant “my_” et en appuyant sur la touche "Tab" key a entré le nom complet sur la ligne de commande.

Variables en lecture seule

Il existe une commande declare que nous pouvons utiliser pour déclarer des variables. Dans les cas simples, vous n'en avez pas vraiment besoin, mais son utilisation vous permet d'utiliser certaines des options de la commande. L'option -r (lecture seule) est probablement celle que vous utiliserez le plus. Cela crée une variable en lecture seule qui ne peut pas être modifiée.

declare -r read_only_var=”Ceci est une chaîne immuable !”

Si nous essayons de lui attribuer une nouvelle valeur, cela échouera.

read_only_var=”Une nouvelle chaîne…”

Écrire dans la fenêtre du terminal

Nous pouvons écrire plusieurs chaînes dans la fenêtre du terminal en utilisant echo ou printf afin qu'elles apparaissent comme s'il s'agissait d'une seule chaîne. Et nous ne sommes pas limités à nos propres variables de chaînes, nous pouvons incorporer des variables d'environnement dans nos commandes.

user_account=”Votre compte utilisateur est :” echo $user_account $USER

Concaténation de chaînes

L'opérateur plus-égal += vous permet d'ajouter “ 8221 ; deux cordes ensemble. C'est ce qu'on appelle la concaténation.

user_account=”Votre compte utilisateur est :” user_account+=$USER echo $user_account

Notez que vous n&#8217 ;t obtenir un espace ajouté automatiquement entre les chaînes concaténées. Si vous avez besoin d'un espace, vous devez en mettre un explicitement à la fin de la première chaîne ou au début de la seconde.

user_account=”Votre compte utilisateur est : ” user_account+=$USER echo $user_account < p>

CONNEXE :Comment définir des variables d'environnement dans Bash sous Linux

Lecture des entrées utilisateur

En plus de créer des variables de chaîne qui ont leur contenu défini dans le cadre de leur déclaration, nous pouvons lire l'entrée de l'utilisateur dans une variable de chaîne.

La commande read lit l'entrée de l'utilisateur. L'option -p (invite) écrit une invite dans la fenêtre du terminal. L'entrée de l'utilisateur est stockée dans la variable de chaîne. Dans cet exemple, la variable s'appelle user_file.

read -p “Ouvrir quel fichier ?” variable de chaîne pour capturer l'entrée, cela fonctionnera toujours. L'entrée utilisateur sera stockée dans une variable appelée REPLY.

read -p “Ouvrir quel fichier ?” echo $REPLY

< /p>

Il est généralement plus pratique de fournir votre propre variable et de lui donner un nom significatif.

Manipuler des chaînes

Maintenant que nous avons nos chaînes, qu'elles soient définies au moment de la création, lues à partir de l'entrée de l'utilisateur ou créées en concaténant des chaînes, nous pouvons commencer à faire des choses avec eux.

Rechercher la longueur d'une chaîne

S'il est important ou utile de connaître la longueur d'une chaîne, nous pouvons l'obtenir en précédant le nom de la variable avec un dièse “#” symbol.

my_string=”Il y a 39 caractères dans cette chaîne.” echo ${#my_string}

Extraction de sous-chaînes par décalages de caractères

Nous pouvons extraire une sous-chaîne d'une variable de chaîne en fournissant un point de départ dans la chaîne et une longueur facultative. Si nous ne fournissons pas de longueur, la sous-chaîne contiendra tout, du point de départ au dernier caractère.

Le point de départ et la longueur suivent le nom de la variable, avec deux-points “:” entre eux. Notez que les caractères d'une variable chaîne sont numérotés à partir de zéro.

long_string=”Frankenstein ou le Prométhée moderne” substring=${long_string:0:12} echo $substring echo ${long_string:27}

Une autre variante vous permet de supprimer un certain nombre de lettres de la fin de la chaîne. En effet, il vous permet de définir un point de départ et d'utiliser un nombre négatif comme longueur. La sous-chaîne contiendra les caractères du point de départ jusqu'à la fin de la chaîne, moins le nombre de caractères que vous avez spécifié dans le nombre négatif.

my_string=”alphabetical” echo ${my_string:5:-4} < p>

Dans tous les cas, la variable de chaîne d'origine est intacte. Le “extrait” la sous-chaîne n'est pas réellement supprimée du contenu de la variable.

Extraction de sous-chaînes par délimiteur

L'inconvénient d'utiliser des décalages de caractères est que vous devez savoir à l'avance où se trouvent les sous-chaînes que vous souhaitez extraire dans la chaîne.

Si votre chaîne est délimitée par un caractère répétitif, vous pouvez extraire des sous-chaînes sans savoir où elles se trouvent dans la chaîne, ni leur longueur.

Pour effectuer une recherche à partir du début de la chaîne, faites suivre le nom de la variable par des signes de pourcentage doubles, %%, le caractère de délimitation et un astérisque, *. Les mots de cette chaîne sont délimités par des espaces.

long_string=”premier deuxième troisième quatrième cinquième” echo ${long_string%%' '*}

Ceci renvoie la première sous-chaîne à partir du début de la chaîne qui ne contient pas le caractère délimiteur. C'est ce qu'on appelle l'option de sous-chaîne courte.

L'option de sous-chaîne longue renvoie la partie avant de la chaîne jusqu'à la dernière sous-chaîne délimitée. En d'autres termes, il omet la dernière sous-chaîne délimitée. Syntaxiquement, la seule différence est qu'il utilise un seul signe de pourcentage “%” dans la commande.

long_string=”premier deuxième troisième quatrième cinquième” echo ${long_string%' '*}

Comme vous vous en doutez, vous pouvez rechercher de la même manière à partir de la fin de la chaîne. Au lieu d'un signe de pourcentage, utilisez un dièse “#” signe et déplacez le délimiteur après l'astérisque “*” dans la commande.

long_string=”this.long.string.of.words.is.delimited.by.periods” echo ${long_string##*.}

Il s'agit de l'option de sous-chaîne courte, elle supprime la première sous-chaîne trouvée à l'arrière de la chaîne qui ne contient pas de délimiteur.

long_string=”this.long. chaîne.de.mots.est.délimitée.par.des.périodes” echo ${long_string#*.}

L'option de sous-chaîne longue renvoie la partie arrière de la chaîne jusqu'au premier délimiteur à partir du début de la chaîne. En d'autres termes, il omet la première sous-chaîne délimitée.

Substitution de sous-chaînes

Échanger des sous-chaînes contre d'autres sous-chaînes est facile. Le format est le nom de la chaîne, la sous-chaîne qui sera remplacée et la sous-chaîne qui sera insérée, séparées par une barre oblique “/” caractères.

string=”le cochon bleu rigole” echo ${string/cochon/chèvre}

Pour limiter la recherche à la fin de la chaîne, faites précéder la chaîne de recherche d'un signe de pourcentage “ % & #8221; caractère.

string=”blue pig giggles” echo ${string/%giggles/chuckles}

Pour limiter la recherche au début de la chaîne, faites précéder la chaîne de recherche d'un dièse “#” caractère.

string=”le cochon bleu rigole” echo ${string/#blue/yellow}

Une chaîne est une chose flexible

Si une chaîne n'est 8217;pas seulement comme vous l'aimeriez ou en auriez besoin, ces outils vous aideront à le reformater pour qu'il réponde à vos besoins. Pour les transformations compliquées, utilisez les utilitaires dédiés, mais pour les ajustements mineurs, utilisez les éléments intégrés du shell et évitez les frais généraux liés au chargement et à l'exécution d'un outil externe.

RELATED : Tout ce que vous avez toujours voulu savoir sur les inodes sous Linux

LIRE LA SUITE

  • › Combien d'énergie le mode d'économie d'énergie sur les téléviseurs permet-il d'économiser réellement ?
  • › Pourquoi s'appelle-t-il Roku ?
  • › 10 fonctionnalités cachées de Windows 10 que vous devriez utiliser
  • › “Apportez votre propre conducteur vulnérable” Les attaques cassent Windows
  • &rsaquo ; 7 conseils pour empêcher votre technologie de surchauffer
  • &rsaquo ; Test du Razer Kaira Pro pour PlayStation : audio robuste, micro de qualité inférieure