Utilisation de la variable de $ IFS
La variable de coquille spéciale $ ifs est utilisée dans Bash pour diviser une chaîne en mots. $ IFS La variable est appelée séparateur de champ interne (IFS) qui est utilisé pour attribuer le délimiteur spécifique pour diviser la chaîne. Les limites des mots sont identifiées en bash par $ ifs. L'espace blanc est la valeur de délimiteur par défaut pour cette variable. Toute autre valeur comme '\ t', '\ n', '-' etc. Peut être utilisé comme délimiteur. Après avoir attribué 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 le barre arrière (\) en tant que caractère plutôt que pour échapper au caractère et à l'option '-a' est utilisé pour stocker les mots divisés en une variable de tableau. La chaîne peut être divisée sans utiliser de variable IFS en bash. Différentes façons de diviser les données de chaîne (avec $ ifs ou sans $ ifs) sont affichées dans les exemples suivants.
Exemple-1: chaîne divisée basée sur l'espace
La valeur de la chaîne est divisée par l'espace blanc par défaut. Créer un fichier nommé 'Split1.sh 'et ajouter le code suivant. Ici, la variable texte $ est utilisée pour attribuer une valeur de chaîne. La variable shell, $ ifs est utilisée pour attribuer 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 divisées en une variable de tableau nommée $ starr. La boucle 'pour' est utilisée pour lire chaque élément du tableau, $ starr.
Split1.shot
#!/ bac / bash
#Define la valeur de chaîne
text = "Bienvenue sur Linuxhint"
# Définissez l'espace comme délimiteur
Ifs = "
#Read les mots divisés en un tableau basé sur le délimiteur d'espace
Lire -a Strarr <<< "$text"
#Coupez le total des mots
Echo "Il y a des mots $ # starr [*] dans le texte."
# Imprimez chaque valeur du tableau en utilisant la boucle
pour val dans "$ starr [@]";
faire
printf "$ val \ n"
fait
Sortir:
Exécutez le script.
$ bash Split1.shot
La sortie suivante apparaîtra après l'exécution du script.
Exemple-2: chaîne divisée basée sur un caractère particulier
Tout caractère spécifique peut être utilisé comme séparateur pour diviser la valeur de la chaîne. Créer un fichier nommé Split2.shot et ajouter le code suivant. Ici, le nom du livre, le nom de l'auteur et la valeur de 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 de shell, $ ifs. Chaque valeur des éléments du tableau est imprimée par la valeur d'index.
Split2.shot
#!/ bac / bash
#Read la valeur de la chaîne
Echo "Entrez le nom du livre, le nom et le prix de l'auteur en séparant la virgule. "
lire du texte
# Définissez la virgule en tant que délimiteur
Ifs = ','
#Read les mots divisés en un tableau basé sur des virgules de virgule
Lire -a Strarr <<< "$text"
# Printent les mots divisés
Echo "Nom du livre: $ starr [0]"
Echo "Nom de l'auteur: $ starr [1]"
Echo "Prix: $ starr [2]"
Sortir:
Exécutez le script.
$ bash Split2.shot
La sortie suivante apparaîtra après l'exécution du script.
Exemple-3: diviser la chaîne sans $ iFS variable
Cet exemple montre comment la valeur de la chaîne peut être divisée sans utiliser $ ifs en bash. Créer un fichier nommé 'Split3.sh ' et ajouter le code suivant. Selon le script, une valeur de texte avec le côlon(:) doit prendre comme entrée pour la division. Ici, la commande «readarray» avec -d est utilisée pour diviser les données de chaîne. L'option '-d' est utilisée pour définir le caractère séparateur dans la commande comme $ ifs. Ensuite, «pour» Loop est utilisé pour imprimer les éléments du tableau.
Split3.shot
#!/ bac / bash
#Read la chaîne principale
Echo "Entrez la chaîne avec le côlon (:) pour se séparer"
Lire Mainstr
#Split la chaîne en fonction du délimiteur, ':'
ReadArray -d: -t Strarr <<< "$mainstr"
printf "\ n"
# Imprimez chaque valeur du tableau en utilisant une boucle
pour ((n = 0; n < $#strarr[*]; n++))
faire
echo "$ starr [n]"
fait
Sortir:
Exécutez le script.
$ bash Split3.shot
La sortie suivante apparaîtra après l'exécution du script.
Exemple-4: divisez la chaîne avec un délimiteur à plusieurs caractères
La valeur de chaîne est divisée par un délimiteur à un seul caractère dans tous les exemples précédents. Comment vous pouvez diviser la chaîne à l'aide de délimiter à plusieurs caractères est affiché dans cet exemple. Créer un fichier nommé 'Split4.sh ' et ajouter le code suivant. Ici, la variable de texte $ est utilisée pour stocker une chaîne de données. $ La variable Delimiter est utilisée pour attribuer des données à plusieurs caractères qui sont utilisées comme délimiteur dans les instructions suivantes. $ MyArray La variable est utilisée pour stocker chaque données divisées en tant qu'élément de tableau. Enfin, toutes les données divisées sont imprimées en utilisant 'pour' Loop.
Split4.shot
#!/ bac / bash
#Define la chaîne à diviser
text = "LearnHtmLllearnPHPlearnmysQLllearnjavascript"
#Define Delimiter multi-caractères
Delimiter = "Learn"
#Concaténate le délimiteur avec la chaîne principale
String = $ text $ délimiter
#Split le texte basé sur le délimiteur
MyArray = ()
tandis que [[$ string]]; faire
MyArray + = ("$ String %%" $ Delimiter "*")
String = $ String # * "$ Delimiter"
fait
# Imprime les mots après la scission
pour la valeur dans $ MyArray [@]
faire
echo -n "$ valeur"
fait
printf "\ n"
Sortir:
Exécutez le script.
$ bash Split4.shot
La sortie suivante apparaîtra après l'exécution du script.
Les données de chaîne doivent se séparer à différentes fins de programmation. Diverses façons de diviser les données de chaîne dans Bash sont présentées dans ce tutoriel. Hope, après avoir pratiqué les exemples ci-dessus, les lecteurs pourront diviser toutes les données de chaîne en fonction de leur exigence.
Pour plus d'informations, regardez la vidéo!