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.
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.
La syntaxe générale de la commande sed est la suivante :
sed [OPTIONS] 's/old-text/new-text/g' filenameOù :
- 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.txtCela 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.txtLe 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.txtL’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.txtCette 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.txtCela 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.txtCela 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.txtCeci 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.txtCeci 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' *.txtCette 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.txtCeci 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.txtCeci 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.txtL’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
- Sauvegardez toujours les fichiers avant d’utiliser l’option -i – Pour éviter toute perte accidentelle de données.
- Utiliser des expressions régulières – Pour effectuer des modifications complexes à l’aide d’un puissant système de recherche de motifs.
- 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.


