Exemples de chaînes fractionnées Bash

Bash Split String Examples



Nous devons diviser les données de chaîne à diverses fins dans la programmation. De nombreux langages de programmation ont une fonction intégrée nommée « split » pour diviser les données de chaîne en plusieurs parties. Mais il n'y a pas de fonction intégrée dans bash pour diviser la chaîne. Normalement, des délimiteurs simples ou multiples sont utilisés pour diviser les données de chaîne. La façon dont vous pouvez diviser la chaîne dans bash est illustrée dans ce didacticiel en utilisant différents exemples.








Utilisation de la variable $IFS

La variable shell spéciale $IFS est utilisée dans bash pour diviser une chaîne en mots. La variable $IFS est appelée séparateur de champs interne (IFS) qui est utilisé pour attribuer le délimiteur spécifique pour diviser la chaîne. Les limites des mots sont identifiées dans bash par $IFS. L'espace blanc est la valeur de délimiteur par défaut pour cette variable. Toute autre valeur comme ' ', ' ', '-' etc. Peut être utilisé comme délimiteur. Après avoir affecté la valeur dans la variable $IFS, la valeur de la chaîne peut être lue par deux options. Ce sont '-r' et '-a'. L'option '-r' est utilisée pour lire la barre oblique inverse () comme un caractère plutôt qu'un caractère d'échappement et l'option '-a' est utilisée pour stocker les mots séparés dans une variable de tableau. La chaîne peut être divisée sans utiliser la variable $IFS dans bash. Différentes manières de diviser les données de chaîne (avec $IFS ou sans $IFS) sont illustrées dans les exemples suivants.



Exemple-1 : chaîne de fractionnement basée sur

La valeur de chaîne est divisée par un espace blanc par défaut. Créez un fichier nommé 'split1.sh' et ajoutez le code suivant. Ici, la variable $text est utilisée pour attribuer une valeur de chaîne. La variable shell, $IFS est utilisée pour affecter le caractère qui sera utilisé pour diviser les données de chaîne. L'espace est utilisé dans ce script comme séparateur. L'option '-a' est utilisée avec la commande de lecture pour stocker les données fractionnées dans une variable de tableau nommée $strarr. La boucle 'for' est utilisée pour lire chaque élément du tableau, $strarr.



split1.sh





#!/bin/bash

#Définir la valeur de la chaîne
texte='Bienvenue sur LinuxHint'

# Définir l'espace comme délimiteur
IFS=''

#Lire les mots séparés dans un tableau basé sur le délimiteur d'espace
lire starr<<< '$texte'

#Comptez le nombre total de mots
chassèrent 'Il y a${#strarr[*]}mots dans le texte.

# Affiche chaque valeur du tableau en utilisant la boucle
pourheuresdans '${strarr[@]}';
faire
imprimer '$ heures '
terminé

Sortir:

Exécutez le script.



$frappersplit1.sh

La sortie suivante apparaîtra après l'exécution du script.

Exemple 2 : chaîne fractionnée en fonction d'un caractère particulier

Tout caractère spécifique peut être utilisé comme séparateur pour diviser la valeur de chaîne. Créer un fichier nommé split2.sh et ajoutez le code suivant. Ici, le nom du livre, le nom de l'auteur et la valeur du prix sont pris en ajoutant une virgule (,) comme chaîne d'entrée. Ensuite, la valeur de la chaîne est divisée et stockée dans un tableau basé sur la valeur de la variable shell, $IFS. Chaque valeur des éléments du tableau est imprimée par la valeur d'index.

split2.sh

#!/bin/bash

#Lire la valeur de la chaîne
chassèrent 'Entrez le nom du livre, le nom de l'auteur et le prix en séparant une virgule. '
liretexte

# Définir une virgule comme délimiteur
IFS=','

#Lire les mots séparés dans un tableau basé sur un délimiteur de virgule
lire starr<<< '$texte'

#Imprimer les mots séparés
chassèrent 'Nom du livre :${strarr[0] }'
chassèrent 'Nom de l'auteur :${strarr[1]}'
chassèrent 'Prix :${strarr[2]}'

Sortir:

Exécutez le script.

$frappersplit2.sh

La sortie suivante apparaîtra après l'exécution du script.

Exemple-3 : diviser la chaîne sans la variable $IFS

Cet exemple montre comment la valeur de chaîne peut être divisée sans utiliser $IFS dans bash. Créez un fichier nommé ' split3.sh ' et ajoutez le code suivant. D'après le script, une valeur textuelle avec les deux points (:) doit prendre en entrée pour le fractionnement. Ici, la commande 'readarray' avec l'option -d est utilisée pour diviser les données de chaîne. L'option '-d' est utilisée pour définir le caractère de séparation dans la commande comme $IFS. Ensuite, la boucle 'for' est utilisée pour imprimer les éléments du tableau.

split3.sh

#!/bin/bash

#Lire la chaîne principale
chassèrent 'Entrez la chaîne avec deux points (:) à diviser'
liremainstr

#Split la chaîne en fonction du délimiteur, ':'
readarray-ré:-tstarr<<< '$mainstr'
imprimer ' '

# Affiche chaque valeur du tableau en utilisant la boucle
pour (( m=0; m< ${#strarr[*]}; n++))
faire
chassèrent '${strarr[n]}'
terminé

Sortir:

Exécutez le script.

$frappersplit3.sh

La sortie suivante apparaîtra après l'exécution du script.

Exemple-4 : diviser la chaîne avec un délimiteur à plusieurs caractères

La valeur de chaîne est divisée par un seul délimiteur de caractère dans tous les exemples précédents. La façon dont vous pouvez diviser la chaîne à l'aide d'un délimiteur à plusieurs caractères est illustrée dans cet exemple. Créer un fichier nommé Fois split4.sh et ajoutez le code suivant. Ici, la variable $text est utilisée pour stocker une chaîne de données. La variable $delimiter est utilisée pour affecter une donnée à plusieurs caractères qui est utilisée comme délimiteur dans les instructions suivantes. La variable $myarray est utilisée pour stocker chaque donnée fractionnée en tant qu'élément de tableau. Enfin, toutes les données fractionnées sont imprimées en utilisant la boucle 'for'.

split4.sh

#!/bin/bash

#Définir la chaîne à diviser
texte='learnHTMLlearnPHPlearnMySQLlearnJavascript'

#Définir le délimiteur à plusieurs caractères
délimiteur='apprendre'
#Concaténer le délimiteur avec la chaîne principale
chaîne de caractères=$texte$délimiteur

#Diviser le texte en fonction du délimiteur
myarray=()
tandis que [[ $chaîne ]];faire
myarray+=( '${string%%'$delimiter'*}' )
chaîne de caractères=${string#*'$delimiter'}
terminé

#Imprimez les mots après la séparation
pourvaleurdans ${myarray[@]}
faire
chassèrent -n 'valeur $'
terminé
imprimer ' '

Sortir:

Exécutez le script.

$frappersplit4.sh

La sortie suivante apparaîtra après l'exécution du script.

Conclusion:

Les données de chaîne doivent être divisées à des fins de programmation différentes. Différentes manières de diviser les données de chaîne dans bash sont présentées dans ce didacticiel. J'espère qu'après avoir pratiqué les exemples ci-dessus, les lecteurs seront en mesure de diviser toutes les données de chaîne en fonction de leurs besoins.

Pour plus d'informations regardez la vidéo !