Fractionner une chaîne sur un délimiteur dans Bash

Bash

Décomposer la manipulation des chaînes dans Bash

Lorsque vous travaillez avec des scripts shell, une tâche courante consiste à diviser une chaîne en fonction d'un délimiteur. Par exemple, considérons une chaîne contenant des adresses e-mail séparées par des points-virgules. Si vous devez traiter chaque e-mail individuellement, comprendre comment diviser cette chaîne devient essentiel. Cet article vous guidera à travers différentes méthodes pour y parvenir dans Bash.

Nous explorerons des solutions telles que l'utilisation de la commande « tr » et la manipulation du séparateur de champ interne (IFS). À la fin, vous serez en mesure de gérer efficacement le fractionnement des chaînes et de réinitialiser l'IFS à sa valeur par défaut. Plongeons-nous et simplifions vos tâches de script Bash !

Commande Description
tr Traduit ou supprime des caractères. Utilisé ici pour remplacer le point-virgule par un caractère de nouvelle ligne pour diviser la chaîne.
IFS Séparateur de champ interne, utilisé pour diviser les chaînes en fonction d'un délimiteur spécifique dans les scripts Bash.
read -r -a Lit une ligne d'entrée et la divise en un tableau. L'option -r empêche les barres obliques inverses d'être interprétées comme des caractères d'échappement.
echo Imprime le texte sur la sortie standard. Utilisé pour afficher les éléments de chaîne divisée.
split Une fonction Perl qui divise une chaîne en une liste de chaînes en fonction d'un délimiteur spécifié.
foreach Une structure de boucle Perl qui parcourt une liste de valeurs.

Comprendre les techniques de fractionnement de chaînes Bash

Le premier script Bash montre comment diviser une chaîne à l'aide du commande. Ici, nous définissons une chaîne et utilise en collaboration avec tr pour traduire le délimiteur point-virgule en caractère de nouvelle ligne. Cela divise efficacement la chaîne en lignes individuelles. Le La boucle parcourt ensuite chaque ligne, imprimant les adresses entre crochets. Cette méthode est simple et exploite les puissantes capacités de traitement de texte des commandes Unix pour manipuler les chaînes.

Une autre méthode consiste à ajuster le . En réglant temporairement en point-virgule, nous pouvons diviser la chaîne en un tableau. Nous sauvegardons l'original à OIFS avant de le modifier, en nous assurant de pouvoir le restaurer plus tard. Le La commande lit la chaîne d'entrée dans un tableau appelé , en le divisant en fonction de la modification . Après traitement, l'original IFS est restauré. Cette approche fournit un moyen plus programmatique de gérer le fractionnement de chaînes dans Bash, nous permettant d'utiliser des tableaux pour des manipulations ultérieures.

Utiliser Bash pour diviser des chaînes sur un délimiteur

Script bash

#!/usr/bin/env bash
# Input string
IN="bla@some.com;john@home.com"
# Split string using 'tr' and iterate
mails=$(echo $IN | tr ";" "\n")
for addr in $mails; do
  echo "> [$addr]"
done

# Output:
# > [bla@some.com]
# > [john@home.com]

Fractionner une chaîne dans Bash à l'aide d'IFS

Script bash

#!/usr/bin/env bash
# Input string
IN="bla@some.com;john@home.com"
# Save the original IFS
OIFS=$IFS
# Set IFS to semicolon
IFS=';'
# Split string into an array
read -r -a mails2 <<< "$IN"
# Restore the original IFS
IFS=$OIFS
# Iterate over the array
for x in "${mails2[@]}"; do
  echo "> [$x]"
done

# Output:
# > [bla@some.com]
# > [john@home.com]

Utiliser Python pour le fractionnement de chaînes

Script Python

#!/usr/bin/env python3
# Input string
IN = "bla@some.com;john@home.com"
# Split string by semicolon
mails = IN.split(';')
# Iterate and print each element
for addr in mails:
    print(f"> [{addr}]")

# Output:
# > [bla@some.com]
# > [john@home.com]

Utiliser Perl pour diviser une chaîne

Script Perl

#!/usr/bin/env perl
use strict;
use warnings;
# Input string
my $IN = "bla@some.com;john@home.com";
# Split string by semicolon
my @mails = split(';', $IN);
# Iterate and print each element
foreach my $addr (@mails) {
    print "> [$addr]\n";
}

# Output:
# > [bla@some.com]
# > [john@home.com]

Techniques avancées de fractionnement de chaînes dans Bash

Une autre méthode puissante pour diviser des chaînes dans Bash consiste à utiliser le commande. est un utilitaire de ligne de commande polyvalent conçu pour l'analyse et le traitement de modèles. Cela peut être particulièrement utile pour diviser des chaînes car cela nous permet de définir des séparateurs de champs personnalisés. Par exemple, nous pouvons utiliser pour diviser une chaîne en fonction du délimiteur point-virgule et imprimer les composants individuels. Cette méthode est très flexible et peut gérer des tâches de manipulation de chaînes plus complexes, ce qui en fait un outil précieux dans la boîte à outils d'un programmeur Bash.

De plus, le La commande peut être utilisée pour diviser des chaînes en fonction de délimiteurs. Le La commande est généralement utilisée pour extraire des sections de chaque ligne de données d’entrée. En spécifiant un délimiteur avec le et en sélectionnant les champs avec l'option -f option, nous pouvons diviser et extraire efficacement des parties d’une chaîne. Par exemple, en utilisant extrairait la première adresse e-mail de la chaîne d’entrée. Ces méthodes avancées offrent plus de contrôle et de précision pour les tâches de manipulation de chaînes dans Bash.

  1. Comment diviser une chaîne sur un délimiteur dans Bash ?
  2. Vous pouvez utiliser le variable ou des commandes comme , , et cut pour diviser des chaînes sur un délimiteur.
  3. Quel est le variable dans Bash ?
  4. Le (Internal Field Separator) est une variable spéciale qui définit le(s) caractère(s) utilisé(s) pour diviser le texte saisi en mots ou en jetons.
  5. Comment puis-je réinitialiser le variable à sa valeur par défaut ?
  6. Enregistrez l'original valeur avant de la modifier, et restaurez-la après traitement : .
  7. Que fait le la commande est-elle effectuée dans le fractionnement de chaînes ?
  8. Le La commande traduit ou supprime des caractères. Il peut remplacer les délimiteurs par des nouvelles lignes pour diviser une chaîne : .
  9. Puis-je diviser une chaîne en un tableau à l’aide de Bash ?
  10. Oui, en changeant le variable et en utilisant , vous pouvez diviser une chaîne en un tableau :
  11. Quel est le commande utilisée pour ?
  12. est un utilitaire de ligne de commande pour l'analyse et le traitement de modèles. Il peut diviser les chaînes en définissant des séparateurs de champs personnalisés.
  13. Comment le travail de commandement ?
  14. Le commande extraire les sections de chaque ligne d’entrée. Il peut diviser une chaîne en spécifiant un délimiteur et en sélectionnant des champs : .
  15. Pourquoi utilise-t-on utile pour diviser les chaînes ?
  16. En utilisant vous permet de définir des délimiteurs personnalisés pour diviser les chaînes, ce qui le rend polyvalent pour différents formats d'entrée.
  17. Est-il possible de diviser une chaîne par plusieurs délimiteurs dans Bash ?
  18. Oui, vous pouvez utiliser une combinaison de et pour gérer plusieurs délimiteurs.
  19. Puis-je utiliser pour le fractionnement de chaînes dans Bash ?
  20. Alors que est avant tout un éditeur de flux, il peut être combiné avec d'autres commandes comme pour diviser les chaînes indirectement.

Maîtriser la manipulation des chaînes dans Bash peut améliorer considérablement l'efficacité de vos scripts. Que ce soit en utilisant pour des délimiteurs simples ou des outils plus avancés comme et , ces techniques sont essentielles pour une programmation Bash efficace. N'oubliez pas de toujours restaurer l'original IFS pour éviter un comportement inattendu dans vos scripts. Avec ces méthodes, vous pouvez gérer un large éventail de tâches de traitement de chaînes dans vos scripts Bash.