Table des matières

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 :

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