Commande sed pour remplacer une chaîne dans un fichier

Sed Command Replace String File



Chaque fois que nous travaillons avec n'importe quel type de fichiers, il est très courant d'apporter des modifications à ces fichiers en recherchant et en remplaçant des mots. La plupart des éditeurs de texte fournissent différentes méthodes basées sur l'interface graphique pour effectuer ces modifications. Cependant, parfois, vous avez besoin d'un moyen de trouver et de remplacer les mots dans un fichier via le terminal. Par conséquent, dans cet article, nous vous expliquerons la méthode d'utilisation de la commande sed pour remplacer une chaîne dans un fichier texte. Nous mettrons également en lumière les différents scénarios dans lesquels cette commande peut être utilisée.

Remarque : nous utiliserons Linux Mint 20 pour démontrer l'utilisation de la commande sed pour remplacer une chaîne dans un fichier. Vous pouvez également utiliser n'importe quelle autre version de Linux si vous le souhaitez.







Utilisation de la commande sed :

Nous allons maintenant vous montrer quelques exemples très intéressants pour décrire l'utilisation de la commande sed sous Linux. Voyons comment cette commande fonctionne dans différents scénarios.



Création d'un fichier texte pour la démonstration :

Pour démontrer l'utilisation de la commande sed, nous aimerions travailler avec un fichier texte. Cependant, vous pouvez même créer un fichier Bash ou tout autre fichier de votre choix. Deuxièmement, nous allons créer le fichier dans le répertoire Home afin de ne pas avoir à spécifier de chemins complexes lors de l'accès à ce fichier. Pour créer un fichier texte, les étapes suivantes doivent être effectuées :



Cliquez sur l'icône du gestionnaire de fichiers située dans votre barre des tâches Linux Mint 20 :





Créez maintenant un nouveau fichier texte dans le répertoire Home en cliquant avec le bouton droit n'importe où là-bas, puis en choisissant l'option Nouveau document dans le menu en cascade et l'option Document vide dans le menu en sous-cascade. Une fois le fichier texte créé, donnez-lui un nom approprié. Pour cet exemple particulier, je l'ai nommé sed.txt.



Double-cliquez sur ce fichier pour l'ouvrir et tapez n'importe quel texte aléatoire comme indiqué dans l'image ci-dessous. Enregistrez ce fichier texte en appuyant sur Ctrl + S, puis fermez-le.

Lancez maintenant le terminal dans Linux Mint 20 comme indiqué dans l'image suivante :

Après avoir lancé le terminal sous Linux Mint 20, vous pouvez parcourir tous les exemples mentionnés ci-dessous un par un.

Utilisation de la commande sed pour remplacer toutes les occurrences d'un mot donné :

Vous pouvez utiliser la commande sed pour remplacer toutes les occurrences d'un mot donné dans un fichier texte. La syntaxe pour atteindre cet objectif est mentionnée ci-dessous :

$sed's/sed/TrouverMot/RemplacerMot/’ fichier.txt

Ici, vous devez remplacer FindWord par le mot que vous souhaitez remplacer et ReplaceWord par le mot à remplacer. De plus, vous devez également remplacer file par le nom du fichier dans lequel vous souhaitez effectuer ces remplacements. Dans ce scénario, j'ai remplacé FindWord par sed et ReplaceWord par replace. Notre nom de fichier était sed.txt. Il est également illustré dans l'image suivante :

L'exécution réussie de cette commande vous montrera les changements qui se sont produits en raison de l'exécution de cette commande sur votre terminal :

Utilisation de la commande sed pour remplacer la nième occurrence d'un mot donné dans chaque ligne :

Le scénario ci-dessus était le scénario de remplacement le plus simple, mais parfois, vous ne voulez pas remplacer toutes les occurrences d'un mot plutôt que vous souhaitez remplacer uniquement la première, la deuxième ou la énième occurrence de ce mot dans toutes les lignes. Pour ce faire, vous pouvez exécuter la commande suivante :

$sed's/TrouverMot/RemplacerMot/num' fichier.txt

Ici, vous devez remplacer FindWord par le mot que vous souhaitez remplacer et ReplaceWord par le mot à remplacer. De plus, vous devez également remplacer file par le nom du fichier dans lequel vous souhaitez effectuer ces remplacements. Dans ce scénario, j'ai remplacé FindWord replace et ReplaceWord par sed. Notre nom de fichier était sed.txt. De plus, num fait référence à l'occurrence ou à la position du mot à remplacer. Dans l'exemple illustré, je souhaite remplacer la première occurrence de replace par sed dans chaque ligne, comme indiqué dans l'image ci-dessous :

L'exécution réussie de cette commande vous montrera les changements qui se sont produits en raison de l'exécution de cette commande sur votre terminal :

Utilisation de la commande sed pour remplacer un mot donné dans une ligne spécifique :

Parfois, vous souhaitez uniquement remplacer un mot donné dans une ligne spécifique et non dans l'ensemble du document. Pour ce faire, vous devez explicitement spécifier ce numéro de ligne particulier dans la commande suivante :

$sed'LigneNum s/TrouverMot/RemplacerMot/’ fichier.txt

Ici, vous devez remplacer FindWord par le mot que vous souhaitez remplacer et ReplaceWord par le mot à remplacer. De plus, vous devez également remplacer file par le nom du fichier dans lequel vous souhaitez effectuer ces remplacements. Dans ce scénario, j'ai remplacé FindWord sed et ReplaceWord par replace. Notre nom de fichier était sed.txt. En outre, vous devez remplacer LineNum par le numéro de ligne de la ligne particulière dans laquelle vous souhaitez effectuer le remplacement. Dans cet exemple, nous voulions remplacer sed par replace à la ligne numéro 2 de notre fichier, comme indiqué dans l'image suivante :

L'exécution réussie de cette commande vous montrera les changements qui se sont produits en raison de l'exécution de cette commande sur votre terminal. Vous pouvez facilement vérifier que lesdits changements n'ont eu lieu qu'à la ligne numéro 2 de notre dossier et non dans l'ensemble du texte.

Conclusion:

Chaque fois que vous ressentez le besoin de remplacer un mot dans un fichier, la toute première chose que vous devez faire est d'identifier votre besoin particulier, c'est-à-dire si vous souhaitez remplacer ce mot spécifique dans l'ensemble du fichier ou si vous souhaitez remplacer une occurrence spécifique de ce mot particulier, ou vous voulez remplacer ce mot dans une ligne spécifique. Une fois que vous avez identifié votre scénario particulier, vous pouvez utiliser cette méthode spécifique à partir des exemples présentés dans cet article.