Comment effectuez-vous plusieurs remplacements SED

Comment effectuez-vous plusieurs remplacements SED
La commande SED (Stream Editor) peut remplir diverses fonctions sur les flux dans Unix / Linux. Par exemple: rechercher, trouver et remplacer, insertion / suppression, etc. Cependant, il est principalement utilisé pour trouver et remplacer les textes. La commande SED permet d'éditer des fichiers sans les ouvrir. Parce qu'il s'agit d'un outil de ligne de commande, il peut également être implémenté dans les scripts.

Dans ce guide, nous présenterons comment effectuer les multiples remplacements SED dans un seul fichier.

Remplacement du texte à l'aide de SED

Création d'un exemple de texte
La commande SED exploite une tâche définie sur un flux. À des fins de démonstration, nous allons créer un fichier factice pour servir de flux. Créez un fichier texte en utilisant la commande suivante:

chat < test.txt
Le renard brun rapide
saute par-dessus le chien paresseux
Eof

Vérifiez le contenu du fichier à l'aide de la commande suivante:

$ test de chat.SMS

Remplacement du texte
Pour remplacer les textes, la structure de commande générale est la suivante:

$ sed 's /// g'

Ici, SED recherche le modèle spécifié dans le flux donné et le remplacez par le texte de remplacement donné. Le drapeau G garantit que SED recherche l'ensemble du texte pour les correspondances de motifs.

Essayons-le sur notre fichier de démonstration. Exécutez la commande suivante:

$ SED 'S / The / Hello / G' Test.SMS

Effectuer plusieurs remplacements

Dans le dernier exemple, nous avons remplacé un seul modèle de texte. Et si vous vouliez remplacer plusieurs modèles?

Il y a deux façons différentes de le faire. Nous pouvons le faire dans une seule commande SED ou le diviser en plusieurs.

Plusieurs remplacements dans une seule commande SED
Nous pouvons passer les multiples expressions à SED en utilisant le drapeau -e. Jetez un œil à l'exemple suivant:

$ sed -e 's / le test.SMS

Ici, la première expression remplace «le» par «bonjour». La deuxième expression remplace «paresseux» par «fatigué».

Au lieu de déclarer plusieurs expressions, nous pouvons également les combiner en une seule expression, chaque partie séparée par un point-virgule (;). Jetez un œil à l'exemple suivant:

$ sed -e S / le / Hello / g; s / paresseux / fatigué / 'Test.SMS

Si vous exécutez le même ensemble de commandes SED encore et encore, nous pouvons les placer dans un seul fichier. Nous pouvons passer le fichier comme source de commandes à SED en utilisant l'indicateur -f. La structure de commande ressemble à ce qui suit:

$ sed -f

Mettons-le en action. Nous avons compilé toutes les commandes SED que nous voulons exécuter dans les commandes du fichier.SMS.

$ commandes Cat.SMS

Notez que chaque expression SED unique est placée dans une nouvelle ligne pour améliorer la clarté visuelle. Cependant, vous pouvez également utiliser la technique du point-virgule pour fusionner toutes les expressions en une seule expression.

Maintenant, nous pouvons spécifier ce fichier à SED comme la liste des expressions à exécuter sur le flux donné:

$ sed -f commandes.Test TXT.SMS

Plusieurs remplacements SED par plusieurs commandes SED
C'est une approche plus simple. Au lieu d'utiliser n'importe quelle astuce de fantaisie, nous filtrons le flux à l'aide d'une commande SED et passons la sortie aux autres commandes SED.

Jetez un œil à l'exemple suivant:

$ SED 'S / The / Hello / G' Test.txt | sed 's / paresseux / fatigué /'

Ici, la première commande SED remplace «le» par «bonjour». La sortie est ensuite tuée vers la deuxième commande SED qui remplace «paresseux» par «fatigué».

Bien que cette méthode soit simple, elle peut devenir redondante très facilement, surtout si vous avez besoin d'exécuter plusieurs expressions SED. Dans ce cas, l'utilisation du fichier de commande SED est le moyen le plus efficace.

Conclusion

Dans ce guide, nous avons exploré les différentes manières sur la façon dont nous pouvons effectuer les multiples remplacements en utilisant SED. Nous avons démontré comment passer les multiples expressions en utilisant le drapeau -e. Nous avons en outre comprimé les multiples expressions en une seule expression en utilisant les demi-colons. Pour une charge de travail plus répétitive, nous avons également démontré l'utilisation d'un fichier texte pour exécuter les multiples expressions SED à la fois.

Enfin, nous avons exploré l'utilisation de SED d'une manière simple: la sortie de la sortie d'une commande SED à une autre.

Dans ce guide, les commandes SED ne modifient pas réellement le contenu du fichier. En savoir plus sur l'utilisation de SED pour modifier les fichiers en place.

Happy Computing!