Cheatsheet sur la Commande sed
La commande sed
(Stream Editor) est un éditeur de texte non interactif très puissant. Elle permet de manipuler et transformer du texte dans un fichier ou un flux. Voici un guide complet sur sed
avec des options, des exemples, et des explications en français.
Introduction à sed
sed
permet de lire des fichiers ligne par ligne, de les traiter selon des instructions et de les afficher en sortie ou les enregistrer dans un fichier. Il est très couramment utilisé pour effectuer des remplacements de texte, des suppressions de lignes, des insertions et des transformations.
Syntaxe de Base
sed [OPTIONS] 'SCRIPT' fichier
Exemple de Base
sed 's/ancien/nouveau/' fichier.txt
Cet exemple remplace la première occurrence de "ancien" par "nouveau" dans chaque ligne de fichier.txt
.
Options Courantes de sed
-e
: Permet de spécifier plusieurs commandessed
à exécuter.-i
: Modifie le fichier en place (sans créer de fichier temporaire).-n
: Empêche l'affichage automatique des lignes en sortie (utile avecp
pour contrôler l'affichage).-r
: Utilise les expressions régulières étendues (compatible avecERE
).-f
: Lit les commandessed
depuis un fichier.
Commandes Utilisées dans sed
1. Remplacer du Texte (s
)
La commande s
est la plus utilisée avec sed
pour effectuer des remplacements.
Syntaxe
sed 's/ancien/nouveau/' fichier.txt
s
: Indique qu'on souhaite remplacer du texte.ancien
: Le texte ou motif à remplacer.nouveau
: Le texte de remplacement.
Exemples
sed 's/chat/chien/' fichier.txt # Remplace la première occurrence de "chat" par "chien"
sed 's/chat/chien/g' fichier.txt # Remplace toutes les occurrences de "chat" par "chien"
sed 's/chat/chien/2' fichier.txt # Remplace la deuxième occurrence de "chat" dans chaque ligne
2. Suppression de Lignes (d
)
La commande d
est utilisée pour supprimer des lignes spécifiques.
Syntaxe
sed 'NUMd' fichier.txt
NUM
: Le numéro de la ligne à supprimer.
Exemples
sed '3d' fichier.txt # Supprime la troisième ligne du fichier
sed '2,5d' fichier.txt # Supprime les lignes de 2 à 5
sed '/motif/d' fichier.txt # Supprime toutes les lignes contenant "motif"
3. Afficher des Lignes (p
)
La commande p
est utilisée pour afficher des lignes spécifiques. Utilisée avec l'option -n
, elle contrôle l'affichage des lignes.
Syntaxe
sed -n '/motif/p' fichier.txt
-n
: Empêche l'affichage par défaut de toutes les lignes./motif/p
: Affiche uniquement les lignes qui correspondent au motif.
Exemples
sed -n '1,3p' fichier.txt # Affiche uniquement les lignes 1 à 3
sed -n '/chat/p' fichier.txt # Affiche uniquement les lignes contenant "chat"
4. Insertion et Ajout de Lignes (i
et a
)
La commande i
insère une ligne avant la ligne spécifiée, tandis que a
ajoute une ligne après la ligne spécifiée.
Syntaxe
sed 'NUMi\texte' fichier.txt # Insère du texte avant la ligne NUM
sed 'NUMa\texte' fichier.txt # Ajoute du texte après la ligne NUM
Exemples
sed '2i\Nouvelle ligne' fichier.txt # Insère "Nouvelle ligne" avant la ligne 2
sed '4a\Texte ajouté' fichier.txt # Ajoute "Texte ajouté" après la ligne 4
5. Remplacer sur une Plage de Lignes
Il est possible d'appliquer un remplacement sur une plage spécifique de lignes.
Syntaxe
sed '3,6s/ancien/nouveau/' fichier.txt
3,6
: Plage des lignes 3 à 6.
Exemple
sed '1,5s/chien/chat/' fichier.txt # Remplace "chien" par "chat" uniquement dans les lignes 1 à 5
6. Modifier des Fichiers en Place (-i
)
L'option -i
modifie le fichier en place, ce qui signifie que les changements sont directement enregistrés dans le fichier d'origine.
Syntaxe
sed -i 's/ancien/nouveau/' fichier.txt
Exemple
sed -i 's/erreur/correction/g' fichier.txt # Remplace "erreur" par "correction" dans le fichier original
7. Expressions Régulières Étendues (-r
)
L'option -r
permet d'utiliser des expressions régulières étendues (ERE).
Syntaxe
sed -r 's/(motif1|motif2)/nouveau/' fichier.txt
Exemple
sed -r 's/(chat|chien)/animal/' fichier.txt # Remplace "chat" ou "chien" par "animal"
Caractères Spéciaux dans sed
^
: Début de la ligne.$
: Fin de la ligne..
: Correspond à n'importe quel caractère.*
: Correspond à zéro ou plusieurs répétitions du caractère précédent.[]
: Classe de caractères, ex:[a-z]
pour les lettres minuscules.\
: Caractère d'échappement pour utiliser des caractères spéciaux.
Utilisation Avancée de sed
1. Suppression des Espaces en Début et Fin de Ligne
sed 's/^ *//;s/ *$//' fichier.txt
Cet exemple supprime les espaces en début (^ *
) et en fin (*$
) de chaque ligne du fichier.
2. Remplacement Multiligne
Pour remplacer un motif qui s'étend sur plusieurs lignes, sed
peut être utilisé avec des astuces comme l'utilisation de N
pour joindre des lignes.
Exemple
sed ':a;N;$!ba;s/\n//g' fichier.txt
Cet exemple joint toutes les lignes du fichier en une seule en supprimant les sauts de ligne (\n
).
Utilisation de Fichiers de Commandes avec -f
Il est possible de stocker des commandes sed
dans un fichier et de les exécuter toutes à la fois.
Exemple
- Créez un fichier de commandes
commands.sed
:
s/ancien/nouveau/
/motif/d
- Exécutez
sed
avec le fichier de commandes :
sed -f commands.sed fichier.txt
Conclusion
sed
est un outil extrêmement puissant pour manipuler le texte directement depuis la ligne de commande. Il est particulièrement utile pour les scripts d'automatisation et les tâches de traitement de fichiers. Avec ces exemples, vous avez maintenant une base solide pour utiliser sed
de manière efficace dans vos projets quotidiens.