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é – Traiter rapidement des fichiers volumineux sans les ouvrir.
Édition en ligne – Modifier des 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/old-text/new-text/g' filename

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' file.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 globalement 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 en place (modification directe d’un 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 '/unwanted-text/d' file.txt

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

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

Pour supprimer une ligne spécifique, utilisez :

sed '5d' file.txt

Cela 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\This is a new line' 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\This is an appended line' file.txt

Ceci ajoute “Ceci est une ligne ajouté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

Ceci remplace “Linux” par “Ubuntu” et “Server” par “Cloud” dans file.txt.

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

Pour remplacer des nombres dans un fichier :

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

Ceci remplace tous les chiffres par #.

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

Pour extraire et afficher les lignes 5 à 10 :

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

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

Meilleures pratiques pour l’utilisation de Sed

  1. Sauvegardez toujours les fichiers avant d’utiliser l’option -i – Pour éviter toute perte accidentelle de données.
  2. Utiliser des expressions régulières – Pour effectuer des modifications complexes à l’aide d’un puissant système de recherche de motifs.
  3. Tester les commandes avant d’appliquer les modifications – Exécuter sed sans -i pour prévisualiser la sortie.
  4. 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.