sed

Syntaxe de base

sed [-n] action [fichier1 fichier2 ... fichierx] sed [-n] -e action1 [-e action2 ...] [fichier1 fichier2 ... fichierx] sed -f script-sed [fichier1 fichier2 ... fichierx]
-n	écrit seulement les lignes spécifiées sur la sortie standard
-e	permet de spécifier les commandes à appliquer sur le fichier
-f	les commandes sont lu à partir d'un fichier
-i[SUFFIX]	modifie directement le fichier (avec une sauvegarde si SUFFIX est ajouté)
-r	syntaxe étendue pour les expressions régulières
La commande sed ne modifie pas le fichier d'origine sauf si elle est exécutée avec l'option -i.

Haut de page

Syntaxe d'une action

[adresse[,adresse]] commande [arguments]

Une action est syntaxiquement composée de :

Une partie adresse qui permet de spécifier sur quelles lignes doit s'effectuer la commande.

La commande à exécuter.

Les arguments de la commande.

Syntaxe d'une adresse

toutes les lignes
num	la ligne num (la dernière ligne est référencée par $)
num1,num2	de la ligne num1 à la ligne num2
/REG/	les lignes correspondant à l'expression régulière REG
/REG1,REG2/	les lignes entre la première ligne correspondant à l'expression régulière REG1 et la première ligne correspondant à l'expression régulière REG2

Syntaxe de la commande

Commande	Argument	Action
d	Aucun	Ne pas afficher les lignes spécifiées (delete).
p	Aucun	Afficher les lignes spécifiées (print).
s	/REG/remplacement/[g]	Effectuer une substitution sur les lignes spécifiées (substitute). Le caractère optionnel “g” indique si la substitution doit être globale sur les lignes.
w	fichier	Ecrire les lignes spécifiées dans un fichier (write).
=	Aucun	Afficher le numéro de la ligne spécifiée.
a	texte	Ajouter les lignes de texte après chaque ligne spécifiée (add).
i	texte	Insérer les lignes de texte avant chaque ligne spécifiée (insert).
c	texte	Remplacer les ligne spécifiées par les lignes de texte (change).

Négation de commande

!	La commande s'exécutera sur toutes les lignes sauf celles spécifiées dans l'adresse.

Exemples

Suppression

suppression de lignes

sed '1d;4d' fichier.txt # supprime les lignes 1 et 4 du fichier sed '1,4d' fichier.txt # supprime les lignes 1 à 4 du fichier

suppression de lignes selon expression régulière

sed '/^#/d' fichier.txt # supprime les lignes qui commencent par un commentaire sed "/^#/!d" fichier.txt # supprime tout sauf les ligne qui commencent par un commentaire, donc affiche toutes les lignes commençant par un # sed '/^#/d;/_/d' fichier.txt # supprime les lignes entre une ligne commençant par # et une ligne comportant un _

combinaison des 2

sed '1d;/^#/d' fichier.txt # suppression de la première ligne et de toutes les lignes qui commencent par un commentaire

Filtrage

sed -n '/^#/p' fichier.txt # on n'affiche que les lignes qui commencent par # sed -n 5p fichier.txt # on n'affiche que la ligne 5 sed -n 5,10p fichier.txt # on affiche de la ligne 5 à la ligne 10

Substitution

sed 's/truc/machin/' fichier.txt # remplace truc par machin sed "s/[Cc]omputer/COMPUTER/g" fichier.txt # remplace computer et Computer par COMPUTER sed -e "s/\([0-9][0-9]*\)/**\1**/" fichier.txt # encadre le premier nombre de la ligne avec des ** sed -z 's/\n/ /g' fichier.txt # supprime les retours à la ligne

Translitération

sed 'y/éèêë/eeee/' fichier .txt # remplace les e accentués par un e simple

Commandes groupés

sed '2,6 {y/éèê/eee/;s/truc/machin/g}' fichier.txt # remplace les e accentués et truc par machin sur les lignes 2 à 6 sed '/^#/ {y/éèê/eee/;s/truc/machin/g}' fichier.txt # remplace les e accentués et truc par machin sur les lignes qui commencent par un #

Divers

sed -n "/\./=" fichier.txt # affiche les numéros des lignes comportant un . sed -e "/\./=" -e "/[A-Z]/w capitale" fichier.txt # idem et écrit dans le fichier capitale toutes les lignes qui ont une majuscule

Haut de page