Avez-vous cherché une autre façon d’effectuer des opérations d’édition sur des textes ? Ne cherchez plus ! Ce tutoriel vous couvre avec des exemples d’éditeur de flux sed.
En bref, sed vous permet d’effectuer une large gamme de modifications sur des fichiers et des flux de texte de manière non interactive. Vous prenez les décisions d’édition au fur et à mesure que vous appelez les commandes. Et dans ce tutoriel, vous apprendrez comment utiliser les commandes sed et rationaliser efficacement votre flux de travail.
Lisez la suite et renforcez vos compétences en ligne de commande !
Prérequis
Assurez-vous d’avoir ce qui suit pour suivre la démonstration pratique de ce tutoriel :
- A command line interface (e.g., Terminal on macOS or Linux) – This tutorial uses Ubuntu Linux 20.04, but the commands should work on most popular operating systems.
- A text editor (e.g., nano, vi, or Sublime Text) – This tutorial uses Nano.
Installation de sed sur Ubuntu
sed est généralement inclus en tant qu’utilitaire standard dans la plupart des systèmes d’exploitation de type Unix, y compris Linux et macOS. Mais quoi qu’il en soit, vérifier si vous avez déjà sed sur votre système serait correct et est une procédure de base avant d’effectuer des transformations de texte.
1. Ouvrez votre terminal et exécutez la commande sed
ci-dessous pour vérifier quelle version de sed est installée sur votre système.
Si sed est installé, vous verrez le numéro de version de sed et des informations sur la construction, comme indiqué ci-dessous.

Sinon, vous verrez le message d’erreur ci-dessous si sed n’est pas installé.
Ce message d’erreur indique que la commande sed
n’a pas été trouvée dans la variable d’environnement PATH de votre système.

2. Ensuite, exécutez la commande [apt-get update
ci-dessous pour mettre à jour et installer sed
sur votre système.
Cette commande récupère les dernières informations sur les paquets à partir des sources de paquets configurées, y compris les dépendances, les fichiers et les scripts du paquet. Exécuter cette commande est nécessaire pour vous assurer d’installer la dernière version de sed et de tout autre paquet dont vous pourriez avoir besoin.

3. Enfin, exécutez la commande suivante pour vérifier que la commande sed
est installée sur votre système.
Cette commande affiche le chemin complet vers l’exécutable sed, qui dans cet exemple est /usr/bin/sed.
Une fois que vous avez installé sed et vérifié qu’il est dans votre PATH, vous pouvez utiliser la commande sed
pour effectuer diverses transformations et manipulations de texte.

Remplacement de chaînes dans un fichier texte
sed est un éditeur de flux populaire disponible sur la plupart des systèmes d’exploitation de type Unix, et l’une des fonctionnalités les plus pratiques de sed est le remplacement de chaînes dans un fichier texte.
Voici quelques scénarios, mais non limités à, où le remplacement de chaînes est utile:
- Mise à jour d’une liste d’URL pour refléter un nouveau nom de domaine.
- Changement des IDs de produit dans une base de données ou un fichier CSV.
- Formatage des données pour les importer dans un autre système et bien plus encore.
La syntaxe de base pour utiliser sed est la suivante où :
Placeholder | Function |
---|---|
command | Controls sed’s behavior. |
options | Allows you to customize the behavior of the sed command |
input_file | Specifies the file or text stream that you want to edit. Typically, you can specify a single file or stream, but concatenating multiple files or streams by redirection also works. |
output_file | Specifies the file that contains the results of your sed command. The file can be new or the same as input_file, depending on how you use sed. |
Supposons que vous ayez un fichier texte appelé urls.txt
qui contient une liste d’URL et que vous souhaitiez mettre à jour toutes les URL pour utiliser un nouveau nom de domaine.
1. Exécutez les commandes echo
ci-dessous pour créer le fichier urls.txt
dans le répertoire actuel. Ces commandes ne fournissent pas de sortie, mais écrivent des textes spécifiés dans le fichier.
2. Ensuite, exécutez la commande cat
pour afficher le contenu du fichier urls.txt. cat urls.txt
La sortie ci-dessous confirme les trois anciennes URL écrites dans le fichier urls.txt.

3. Maintenant, exécutez la commande ci-dessous pour rechercher et substituer (s
) toutes les occurrences de la chaîne old-domain.com
par new-domain.com
dans le fichier urls.txt
.
Vous verrez que les URL dans votre fichier d’entrée ont été mises à jour avec le nouveau domaine, comme indiqué.

Remplacement de la Nième occurrence d’une chaîne
En plus de la fonctionnalité de base de recherche et remplacement, sed dispose de commandes intégrées supplémentaires qui vous permettent d’effectuer des transformations de texte plus complexes. Un tel cas est le remplacement de la Nième occurrence de la chaîne de motif dans une seule ligne de texte.
Par exemple, si vous souhaitez mettre à jour le deuxième champ dans un fichier CSV avec une nouvelle valeur ou mettre à jour la troisième occurrence d’une chaîne dans une sauvegarde de base de données.
La syntaxe de base de cette commande est la suivante où:
motif
– est la chaîne à remplacer.remplacement
– est la chaîne à utiliser comme remplacement.n
– is the nth occurrence of the string to replace (e.g.,1
=first occurrence,2
=second occurrence…).
Pour voir comment remplacer la n-ième occurrence d’une chaîne, suivez ces étapes:
Exécutez la commande echo
suivante pour créer une ligne de texte avec trois occurrences du motif rapide
. La commande sed
remplace ensuite (s
) la deuxième occurrence (2
) du motif rapide
par la chaîne rapide
.
Comme vous pouvez le voir ci-dessous, seule la deuxième occurrence du motif rapide a été remplacée par la chaîne rapide, tandis que toutes les autres occurrences restent inchangées.
La commande nth
est sensible à la casse par défaut. Par conséquent, la commande ne recherche que la correspondance exacte du motif. Pour ignorer la casse des lettres du motif, passez à l’étape suivante.

? Notez que la commande
nth
compte les occurrences du motif de gauche à droite. De plus, la commandenth
ne fonctionne que sur une seule ligne de texte. Pour effectuer une substitution sur plusieurs lignes, utilisez une méthode différente démontrée dans la section suivante.
Ensuite, exécutez la commande ci-dessous pour remplacer la deuxième (2
) occurrence du motif rapide
par rapide
tout en ignorant (i
) la casse des lettres.
L’option i
est pratique lorsqu’on travaille avec du texte avec une capitalisation inconsistante.
Ci-dessous, la deuxième occurrence du mot rapide (QuiCk) est remplacée avec succès par la chaîne rapide — indépendamment de la casse des lettres.

Remplacement de toutes les occurrences d’un motif/chaîne correspondant
Au lieu de remplacer la n-ième occurrence d’une chaîne, peut-être envisagez-vous de remplacer toutes ses occurrences. Faire cela aide considérablement avec votre plan de mettre à jour en masse chaque occurrence d’une chaîne de droit d’auteur avec l’année en cours, par exemple.
1. Créez un fichier appelé input.txt avec le contenu suivant dans votre éditeur de texte préféré.
This is a quick test.
The quick brown fox jumps over the lazy dog.
Quick, you need to finish this task before it gets too late.
2. Ensuite, exécutez la commande suivante pour remplacer (s
) toutes les occurrences du mot quick
par fast
du fichier input.txt
. Une fois remplacées, les modifications sont écrites dans le fichier output.txt
.
3. Maintenant, exécutez la commande ci-dessous pour afficher le contenu du fichier output.txt
et vérifier si le remplacement a été effectué.
Vous verrez que toutes les occurrences du mot quick ont été remplacées par fast, comme indiqué ci-dessous. Tout comme la commande nth
, la commande g
est sensible à la casse et ne remplace que les correspondances exactes.
La chaîne Quick ne sera pas remplacée, comme indiqué ci-dessous, mais vous pouvez utiliser l’option i
pour effectuer des substitutions insensibles à la casse.

Remplacement d’une chaîne de motif correspondant sur une ligne spécifique
Peut-être savez-vous déjà sur quelle ligne de la chaîne vous voulez remplacer se trouve. Pourquoi remplacer toutes les occurrences si vous pouvez remplacer les chaînes sur des lignes spécifiques ? Cette fonctionnalité est utile lorsque vous apportez des modifications à une ligne particulière dans un fichier ou un flux tout en laissant les autres lignes intactes.
Voici la syntaxe pour remplacer une chaîne à partir d’une ligne spécifique, où n
représente le numéro de ligne.
1. Créez un fichier appelé myfile.txt avec le contenu suivant.
test1
test2
test3
2. Ensuite, exécutez la commande sed
ci-dessous pour effectuer ce qui suit :
- Recherchez le mot
test2
à partir de la deuxième ligne (2
) du fichiermyfile.txt
. Remplacez (s
) le mottest2
partest2_changed
. Écrivez les modifications (>
) dans un nouveau fichier appelémyfile_changed.txt
.
This command does not provide output to the terminal since the changes are written to a new file. But you will verify the changes in the following step.
3. Enfin, exécutez la commande cat ci-dessous pour voir le contenu du fichier myfile_changed.txt
.
Comme vous pouvez le voir ci-dessous, la deuxième ligne du fichier myfile.txt a été remplacée par test2_changed, tandis que toutes les autres lignes restent inchangées.

Exclusivement Affichage des Lignes Modifiées
Au lieu d’imprimer l’intégralité du contenu d’un fichier après avoir apporté des modifications, vous pouvez vouloir imprimer exclusivement les lignes modifiées. Comment ? En utilisant le drapeau p
avec l’option -n
.
Voici la syntaxe pour imprimer exclusivement les lignes modifiées où :
- L’option
-n
indique àsed
de supprimer le comportement par défaut d’imprimer chaque ligne. - Le drapeau
p
indique àsed
d’imprimer la sortie de la commande.
Ouvrez votre fichier myfile.txt et remplacez le contenu par ce qui suit. Remarquez que la deuxième ligne est incorrecte car le mot first
devrait être remplacé par second
.
This is the first line of my file.
This is the first line of my file.
This is the third line of my file.
Maintenant, exécutez la commande sed
ci-dessous pour remplacer la chaîne first
par second
à la deuxième ligne (2
) de myfile.txt
, mais affichez uniquement les lignes modifiées (p
).
Vous verrez la sortie de la deuxième ligne modifiée uniquement sur votre terminal, comme indiqué ci-dessous.

Conclusion
Dans ce tutoriel, vous avez utilisé différents exemples d’utilisation de sed pour effectuer des opérations de recherche et de remplacement. De plus, vous avez abordé des techniques plus avancées, telles que le remplacement d’occurrences spécifiques et la sortie uniquement des lignes modifiées.
sed est un puissant outil en ligne de commande qui vous permet d’effectuer diverses tâches de manipulation de texte. Que ce soit pour effectuer des remplacements globaux dans un fichier entier ou des remplacements ciblés sur des lignes spécifiques, sed fera l’affaire.
Maintenant, pourquoi ne pas en savoir plus sur les expressions régulières? Les expressions régulières sont essentielles pour de nombreux outils de manipulation de texte, y compris sed. Ces expressions vous font gagner du temps et réduisent les efforts déployés, surtout lors de la réalisation de recherches complexes et d’opérations de remplacement sur de grandes quantités de texte.