Sed
La commande sed (stream editor) sous Linux est un éditeur de flux permettant de traiter et de manipuler des données textuelles.
Elle est souvent utilisée pour rechercher, remplacer, insérer ou supprimer des chaînes de texte dans des fichiers sans les ouvrir dans un éditeur.
sed est particulièrement utile dans les scripts pour effectuer des modifications en masse.
Syntaxe de base
commande: La commande à appliquer (ex. :spour remplacer du texte).fichier: Le fichier ou flux d'entrée sur lequel appliquer la commande.
Principales commandes de sed
Substitution (
s)Cette commande remplace un texte par un autre.
Syntaxe :
sed 's/texte_ancien/texte_nouveau/' fichier
Exemple :
sed 's/chien/chat/' animaux.txtRemplace la première occurrence de
chienparchatsur chaque ligne deanimaux.txt.Global Substitution (
g)En ajoutant l'option
g,sedremplace toutes les occurrences d'un texte sur chaque ligne.
Exemple :
sed 's/chien/chat/g' animaux.txtRemplace toutes les occurrences de
chienparchatsur chaque ligne deanimaux.txt.Substitution avec sauvegarde (
-i)-ipermet de faire la substitution directement dans le fichier sans afficher le résultat en sortie.
Exemple :
sed -i 's/chien/chat/g' animaux.txtModifie
animaux.txtdirectement, en remplaçant toutes les occurrences dechienparchat.Supprimer des lignes (
d)dpermet de supprimer des lignes spécifiques.
Exemple :
sed '3d' fichier.txtSupprime la troisième ligne de
fichier.txt.Supprimer toutes les lignes contenant un mot spécifique :
sed '/chien/d' animaux.txtSupprime toutes les lignes contenant
chien.Afficher uniquement certaines lignes (
-netp)p(print) permet d'afficher des lignes spécifiques, et-nmasque la sortie par défaut.
Exemple :
sed -n '2p' fichier.txtAffiche seulement la deuxième ligne de
fichier.txt.Afficher les lignes contenant un mot spécifique :
sed -n '/chien/p' animaux.txtAffiche uniquement les lignes contenant
chiendansanimaux.txt.Insertion et ajout de texte
i: Insère une ligne avant une ligne spécifiée.a: Ajoute une ligne après une ligne spécifiée.
Exemple :
sed '2i\Texte ajouté avant la deuxième ligne' fichier.txtInsère
"Texte ajouté avant la deuxième ligne"avant la deuxième ligne defichier.txt.Exemple avec
a:sed '2a\Texte ajouté après la deuxième ligne' fichier.txtAjoute
"Texte ajouté après la deuxième ligne"après la deuxième ligne.
Utilisation des expressions régulières avec sed
sed est compatible avec les expressions régulières, ce qui le rend puissant pour les recherches avancées.
Rechercher en début de ligne (
^)sed 's/^Bonjour/Salut/' fichier.txtRemplace
BonjourparSalutuniquement en début de ligne.Rechercher en fin de ligne (
$)sed 's/!$/./' fichier.txtRemplace
!par.seulement si!se trouve à la fin de la ligne.Caractères spéciaux
Utilisez
\pour échapper les caractères spéciaux comme/,.ou*.
Exemple :
sed 's/http:\/\/site.com/https:\/\/site.com/' fichier.txtRemplace
http://site.comparhttps://site.comdansfichier.txt.
Exemples Pratiques
Remplacer toutes les occurrences d'un mot dans plusieurs fichiers
sed -i 's/ancien/nouveau/g' *.txtRemplace toutes les occurrences de
ancienparnouveaudans tous les fichiers.txtdu dossier.Supprimer toutes les lignes vides
sed '/^$/d' fichier.txtSupprime toutes les lignes vides dans
fichier.txt.Ajouter un texte en début de chaque ligne
sed 's/^/>> /' fichier.txtAjoute
>>au début de chaque ligne dansfichier.txt.Extraire un intervalle de lignes
sed -n '5,10p' fichier.txtAffiche uniquement les lignes 5 à 10 de
fichier.txt.Remplacer des chaînes avec des caractères spéciaux
sed 's/1\.0/2.0/g' version.txtRemplace
1.0par2.0dansversion.txt.
Utilité de sed en scripts
sed est couramment utilisé dans les scripts pour :
Modifier des fichiers de configuration.
Préparer des données pour l’analyse.
Réaliser des transformations en masse sur des fichiers texte.