Comment utiliser la commande SED pour remplacer la chaîne dans des fichiers

Comment utiliser la commande SED pour remplacer la chaîne dans des fichiers

Avez-vous déjà une situation où vous devez remplacer un mot ou une phrase dans de nombreux fichiers? Vous pouvez le copier et le coller, ou peut-être qu'il y a un script existant qui peut faire le travail. Mais que diriez-vous si vous avez juste besoin de le remplacer par un autre mot ou une phrase ailleurs? Vous pouvez utiliser Find, mais ce serait trop générique et nécessiterait d'écrire un script pour cette tâche. Et si vous ne savez même pas quel mot ou phrase vous devez trouver et remplacer? Que diriez-vous d'utiliser SED alors? Si vous n'êtes pas familier avec la ligne de commande Unix, SED est un éditeur de flux. C'est un éditeur de texte simple qui lit à partir de la saisie standard et effectue des opérations d'édition sur le flux tel qu'il est lu. Il est couramment utilisé pour la recherche et remplacer les fonctionnalités dans les scripts.

Dans cet article, nous vous montrerons quelques exemples d'utilisation de SED pour effectuer la recherche et remplacer le texte dans des fichiers.

Rechercher et remplacer la chaîne dans les fichiers

Si vous avez juste besoin d'effectuer une recherche simple et de remplacer, vous pouvez utiliser la syntaxe suivante:

SED -I 'S / String_To_Find / String_To_replace /' File1 File2 Filen 

Ici:

  • -je: Cet drapeau indique que votre fichier d'entrée devrait être l'un des fichiers spécifiés après la commande.
  • string_to_find: C'est la chaîne que vous souhaitez rechercher dans les fichiers.
  • string_to_replace: Ceci est la chaîne que vous souhaitez remplacer la chaîne what_to_find dans les fichiers.
  • fichier1 fichier2 fichier: Ceci est la liste des fichiers que SED recherchera et remplacera.

La commande suivante recherchera toutes les chaînes «bonjour» dans le accueillir.SMS déposer. Puis remplacez-le par une nouvelle chaîne «Howdy» dans le même fichier.

sed -i 's / hello / howdy / g' bienvenue.SMS  

Vous pouvez également créer une sauvegarde du fichier d'origine avant d'apporter des modifications avec -je suivi d'une extension. Par exemple:

sed -i.BACKUP 'S / HELLO / Howdy / G' bienvenue.SMS  

Cela créera un fichier d'accueil.SMS.Sauvegarde dans le répertoire actuel avec le contenu du fichier d'origine.

Remplacer récursivement du texte dans plusieurs fichiers

La commande suivante est utile pour remplacer les chaînes dans plusieurs fichiers à la fois dans un répertoire / opt / docs. Ici trouver va accéder à tous les fichiers sous le répertoire défini et exécuter la commande sed un par un.

find / opt / docs / -type f -exec sed -i 's / hello / howdy / g' ;  

Remplacer le texte sans affecter le fichier d'origine

Si vous ne souhaitez pas apporter de modifications à votre fichier d'origine et créer de nouveaux fichiers avec des chaînes modifiées, utilisez la commande suivante.

SED 'S / HELLO / Howdy / G' bienvenue.txt> bienvenue_2.SMS  

Cette commande créera un nouveau fichier bienvenue_2.SMS avec du texte modifié. Le fichier d'origine avec reste inchangé.

Conclusion

Une commande SED est un outil puissant qui peut être utilisé pour modifier le texte dans des fichiers. C'est utile lorsque vous avez une situation où vous devez trouver et remplacer une chaîne dans de nombreux fichiers. Vous pouvez utiliser Find, mais ce serait trop générique et nécessiter une écriture d'un script. Et si vous ne savez même pas quel mot ou phrase vous devez trouver et remplacer? L'utilisation de SED est une meilleure solution.