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:
Vérifiez le contenu du fichier à l'aide de la commande suivante:
$ test de chat.SMSRemplacement du texte
Pour remplacer les textes, la structure de commande générale est la suivante:
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.SMSEffectuer 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:
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.SMSSi 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 -fMettons-le en action. Nous avons compilé toutes les commandes SED que nous voulons exécuter dans les commandes du fichier.SMS.
$ commandes Cat.SMSNotez 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.SMSPlusieurs 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!