La commande sed (Stream Editor) de Linux est un outil puissant utilisé pour le traitement de texte et la modification de fichiers. Elle permet aux utilisateurs de rechercher, remplacer, insérer et supprimer du texte dans les fichiers de manière efficace, ce qui en fait une commande essentielle pour l’automatisation et l’écriture de scripts. Dans ce guide, nous verrons comment utiliser la commande sed pour mettre à jour des fichiers sous Linux à l’aide d’exemples pratiques.


Pourquoi utiliser la commande Sed ?

La commande sed est largement utilisée pour :

Remplacement de texte – Remplacer facilement des mots, des phrases ou des motifs dans des fichiers.
traitement par lots – Modifier plusieurs fichiers à la fois à l’aide de scripts.
Efficacité – Traite rapidement les fichiers volumineux sans les ouvrir.
Édition en ligne – Modifier les fichiers directement à partir de la ligne de commande.
automatisation – Utilisée dans les scripts pour traiter les modifications de texte répétitives.


Syntaxe de base de la commande Sed

La syntaxe générale de la commande sed est la suivante :

sed [OPTIONS] 's/texte ancien/texte nouveau/g' nom de fichier

Où :

  • s – Signifie substitution.
  • ancien texte – Le texte à remplacer.
  • nouveau-texte – Le texte de remplacement.
  • g – (Global) Assure que toutes les occurrences dans la ligne sont remplacées.
  • filename – Le fichier à modifier.

Comment utiliser la commande Sed pour mettre à jour des fichiers

1. Remplacer un mot dans un fichier

Pour remplacer un mot spécifique dans un fichier, utilisez :

sed 's/Linux/Ubuntu/g' fichier.txt

Cela remplace la première occurrence de “Linux” par “Ubuntu” dans chaque ligne du fichier.txt.

2. Remplacer toutes les occurrences dans un fichier

Pour remplacer toutes les occurrences d’un mot dans un fichier :

sed 's/Linux/Ubuntu/g' file.txt

Le drapeau g garantit que toutes les occurrences d’une ligne sont remplacées.

3. Édition d’un fichier à la place (modification directe du fichier)

Pour effectuer des modifications directement dans le fichier sans afficher la sortie :

sed -i 's/Linux/Ubuntu/g' file.txt

L’option -i permet l’édition sur place, ce qui signifie que le fichier original est modifié sans qu’il soit nécessaire d’enregistrer une version distincte.

4. Remplacer du texte uniquement dans des lignes spécifiques

Pour ne modifier que certaines lignes d’un fichier, indiquez le numéro de ligne :

sed '3s/Linux/Ubuntu/' file.txt

Cette commande remplace “Linux” par “Ubuntu” uniquement à la ligne 3.

5. Supprimer une ligne contenant un texte spécifique

Pour supprimer toutes les lignes contenant un mot spécifique, utilisez :

sed '/texte-indésirable/d' fichier.txt

Cela supprime toutes les lignes contenant “texte indésirable”.

6. Supprimer une ligne spécifique par numéro

Pour supprimer une ligne spécifique, utilisez

sed '5d' file.txt

Cette commande supprime la ligne 5 du fichier file.txt.

7. Insérer du texte avant une ligne

Pour ajouter une ligne avant un numéro de ligne spécifique :

sed '3i\Ceci est une nouvelle ligne' file.txt

Ceci insère “Ceci est une nouvelle ligne” avant la ligne 3.

8. Insérer du texte après une ligne

Pour insérer une ligne après un numéro de ligne spécifique :

sed '3a\Ceci est une ligne ajoutée' file.txt

Ceci ajoute “Ceci est une ligne annexée” après la ligne 3.

9. Remplacer un mot dans plusieurs fichiers

Pour remplacer du texte dans plusieurs fichiers à la fois :

sed -i 's/Linux/Ubuntu/g' *.txt

Cette commande modifie tous les fichiers .txt du répertoire, en remplaçant “Linux” par “Ubuntu”.


Commandes Sed avancées

1. Utiliser plusieurs commandes Sed ensemble

Pour effectuer plusieurs modifications en même temps :

sed -i -e 's/Linux/Ubuntu/g' -e 's/Server/Cloud/g' file.txt

Cela remplace “Linux” par “Ubuntu” et “Server” par “Cloud” dans le fichier.txt.

2. Utiliser Sed avec des expressions régulières

Pour remplacer des chiffres dans un fichier :

sed 's/[0-9]/#/g' file.txt

Cela remplace tous les chiffres par #.

3. Extraire des lignes spécifiques d’un fichier

Pour extraire et afficher les lignes de 5 à 10 :

sed -n '5,10p' file.txt

L’option -n empêche l’impression de l’intégralité du fichier et n’affiche que les lignes 5 à 10.


Bonnes pratiques pour l’utilisation de Sed

🔹 Toujours sauvegarder les fichiers avant d’utiliser -i – Pour éviter les pertes de données accidentelles.
🔹 Utiliser les expressions régulières – Un puissant filtrage pour les modifications complexes.
🔹 Tester les commandes avant d’appliquer les modifications – Exécuter sed sans -i pour prévisualiser la sortie.
🔹 Utiliser des scripts pour l’automatisation – Combiner sed avec des scripts shell pour le traitement par lots.


Conclusion

La commande sed est un outil polyvalent et efficace pour mettre à jour des fichiers sous Linux. Que vous ayez besoin de remplacer du texte, de supprimer des lignes ou d’insérer du contenu, sed peut automatiser et simplifier ces tâches. En maîtrisant sed, vous pouvez améliorer votre flux de travail et accroître votre productivité dans l’administration de Linux et l’écriture de scripts.