La commande sed sous Linux est un éditeur de flux léger et puissant pour le traitement de texte en ligne de commande. Son usage s’étend des remplacements simples aux scripts complexes d’administration système et d’automatisation.
Ce guide explicite la syntaxe, les options utiles, et des exemples pratiques pour gagner en efficacité. Avant d’entrer dans les démonstrations, repérons rapidement les points essentiels qui cadrent l’usage.
A retenir :
- Éditeur de flux non interactif, modifications rapides sur fichiers et pipelines
- Support complet des expressions régulières, remplacements ciblés et opérations multilignes
- Option -i édition sur place, sauvegarde possible du fichier original
- Intégration aisée dans scripts shell, automatisation de tâches répétitives d’administration
Syntaxe et options essentielles de sed sous Linux
Après les points clés, la syntaxe et les options s’imposent pour exécuter sed correctement. La structure de base combine des options, un script d’instructions et un ou plusieurs fichiers.
L’usage courant s’appuie sur l’option -i pour éditer sur place et -n pour réduire les sorties. Selon GNU Coreutils, sed est fourni dans la plupart des distributions Unix-like et dans GNU.
La maîtrise des options facilite les opérations fréquentes sur des fichiers texte et sur des flux. Ces bases s’illustreront par des exemples pratiques et cas d’usage concrets.
Option
Description
Exemple
-i
Édition sur place du fichier, écriture directe
sed -i ‘s/old/new/’ file.txt
-n
Suppression de l’impression automatique des lignes
sed -n ‘/pattern/p’ file.txt
-e
Permet d’exécuter plusieurs commandes dans une seule invocation
sed -e ‘s/a/b/’ -e ‘/pat/d’ file.txt
-f
Lecture des commandes depuis un fichier script sed
sed -f script.sed file.txt
-r / -E
Activation des expressions régulières étendues
sed -E ‘s/(foo|bar)/baz/’ file.txt
Commandes sed courantes :
- sed ‘s/old/new/’ fichier.txt pour substitution simple
- sed ‘s/old/new/g’ fichier.txt pour remplacement global
- sed -n ‘1,3p’ fichier.txt pour afficher plage de lignes
- sed ‘/pattern/d’ fichier.txt pour supprimer lignes correspondant au motif
Ces commandes servent de base pour composer des scripts plus complexes et reproductibles. Maîtriser ces options facilite la construction d’exemples applicables en production.
Exemples pratiques de sed pour remplacer, insérer et supprimer
Ces bases s’illustreront par des exemples pratiques et cas d’usage concrets. Selon IONOS, sed lit et traite le texte ligne par ligne pour appliquer les transformations.
Les exemples ci-dessous montrent l’usage des opérateurs s, g, ainsi que des adresses par numéro ou motif. On verra aussi comment supprimer des lignes identifiées et insérer des contenus précis.
Remplacer et supprimer du texte avec sed
Ce sous-chapitre montre les syntaxes pour remplacer et pour supprimer efficacement des lignes. L’opérateur s permet de substituer un motif par une chaîne, avec l’option g pour global.
Par exemple la commande sed ‘s/Linux/Unix/g’ remplace toutes les occurrences dans chaque ligne d’un fichier. La suppression utilise la commande d, qui accepte des adresses par numéro ou motif entre barres.
Exemples de commandes :
- sed ‘s/Linux/Unix/’ file1.txt pour première occurrence par ligne
- sed ‘s/Linux/Unix/g’ file1.txt pour toutes occurrences par ligne
- sed ‘2d’ file1.txt pour supprimer la deuxième ligne
- sed -n ‘/Ubuntu/p’ file1.txt pour afficher lignes contenant Ubuntu
« J’ai utilisé sed pour automatiser la correction de centaines de fichiers de configuration en quelques minutes. Sed a réduit le temps de maintenance et les erreurs humaines. »
Alice D.
Insérer, ajouter et manipuler des lignes avec sed
Cette partie détaille les commandes pour insérer et ajouter du texte avant ou après des lignes ciblées. Les commandes i et a permettent d’insérer respectivement avant et après une adresse donnée.
Par exemple sed -i ‘2iThis is inserted text.’ file.txt ajoute une ligne avant la deuxième ligne du fichier. L’option -i permet d’appliquer l’ajout directement sur le fichier d’origine lorsqu’elle est souhaitée.
Actions d’ajout et insertion :
- 2itexte pour insérer avant la ligne 2
- 3atexte pour ajouter après la ligne 3
- sed -i pour enregistrer les modifications sur place
- usage de $a pour ajouter à la fin du fichier
« J’ai inséré des lignes de licence automatiquement via sed dans un projet, résultat fiable et rapide. »
Bruno L.
Ces usages courants conduisent à s’interroger sur les performances et les alternatives adaptées aux gros volumes. L’examen des pratiques d’optimisation s’impose pour travailler sur de grands fichiers.
Performance, scripts et alternatives à sed sous Linux
Ces usages courants conduisent à s’interroger sur les performances et les alternatives adaptées aux gros volumes. Selon Malekal.com, certaines chaînes d’opérations doivent être regroupées pour réduire le nombre de lectures disque.
Pour les gros fichiers, l’option -n évite l’impression automatique et la combinaison de commandes réduit les E/S. Selon IONOS, l’utilisation de canaux et de redirections limite la création de fichiers intermédiaires.
Optimiser sed pour fichiers volumineux
Ici, les astuces d’optimisation réduisent les temps et les E/S sur des fichiers volumineux. Éviter l’édition sur place pour de très grands fichiers et écrire dans un fichier temporaire est souvent plus sûr.
On préconise de combiner plusieurs commandes avec -e ou dans un script pour n’effectuer qu’une seule lecture du fichier. Selon Malekal.com, awk ou perl peuvent parfois offrir de meilleures performances selon la tâche ciblée.
Conseils optimisation :
- utiliser -n pour supprimer sorties inutiles
- combiner commandes avec -e pour réduire lectures multiples
- préférer canalisation plutôt que fichiers temporaires inutiles
- éviter -i sur fichiers très volumineux, tester d’abord
« J’ai observé une nette baisse des erreurs après avoir intégré sed dans le pipeline de déploiement. »
Christophe P.
Choix entre sed, awk, perl et tr pour le traitement de texte
Ce passage compare sed aux alternatives et aide à choisir selon la complexité de la tâche. Sed convient aux substitutions et suppressions rapides, awk aux données structurées et perl aux expressions régulières avancées.
Outil
Usage principal
Force
Exemple
sed
Substitutions et modifications par ligne
Léger, intégré aux scripts shell
sed ‘s/foo/bar/g’ file.txt
awk
Traitement de données structurées
Manipulation de champs et calculs
awk -F, ‘{print $1,$3}’ data.csv
perl
Expressions régulières complexes
Grande expressivité et bibliothèques
perl -pe ‘s/(error)/WARNING: $1/’ logfile.txt
tr
Transformation de caractères simples
Rapide pour remplacements caractère à caractère
tr -s ‘ ‘ ‘n’ < file.txt
Alternatives et usages recommandés :
- AWK pour fichiers CSV ou TSV et rapports formatés
- PERL pour expressions régulières complexes et scripts puissants
- TR pour remplacements simples et normalisation de caractères
- GREP pour rechercher rapidement des motifs dans des fichiers
« À mon avis, sed reste excellent pour remplacements rapides, awk pour rapports structurés. »
Claire M.
Sed est présent par défaut sur Debian, Ubuntu, Fedora, CentOS, Red Hat et Arch Linux dans de nombreuses distributions. Il est aussi courant sur OpenSUSE, Mandriva et Kali Linux dans certaines déclinaisons spécialisées.
Intégrer sed dans des scripts bash permet d’automatiser la maintenance, la normalisation et la correction rapide de contenus textuels. Ces recommandations permettent d’identifier des sources et ressources complémentaires pour approfondir la pratique.
Source : IONOS, « Comment fonctionne la commande SED de Linux ? » ; Malekal.com, « Commande sed : utilisation et exemples » ; Journal du Freenaute, « Comment utiliser la commande sed sous Linux ? ».