Utilisation de la commande 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]

Les actions spécifiées sont exécutées sur chaque ligne du ou des fichiers. Le résultat du traitement est affiché sur la sortie standard. Si plusieurs actions sont spécifiées sur la ligne de commande, chacune doit être précédée de l'option -e.

La commande sed ne modifie pas le fichier d'origine sauf si elle est exécutée avec l'option -i.

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 :

Type d'adresse Lignes traitées
Aucune adresse Toutes les lignes
Adresses de type 1
n Ligne n.
$ Dernière ligne.
/ERb/ Lignes correspondant à l'expression régulière
Adresses de type 2
n1, n2 Ligne n1 jusqu'à ligne n2.
/ERb1/,/ERb2/ La première ligne traitée sera la première trouvée correspondant à ERb1. Le traitement se poursuivra sur toutes les lignes jusqu'à ce que sed rencontre une ligne correspondant à ERb2. Cette dernière sera également traitée.

Syntaxe de la commande :

Commande Argument Type d'adresse supportée (maximum) Signification
d Aucun 2 Ne pas afficher les lignes spécifiées (delete).
p Aucun 2 Afficher les lignes spécifiées (print).
s /ERb/remplacement/[g] 2 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 2 Ecrire les lignes spécifiées dans un fichier (write).
= Aucun 1 Afficher le numéro de la ligne spécifiée.
Dans les commandes ci-dessous, l'antislash rend le caractère "saut de ligne" invisible, ce qui permet de pouvoir spécifier plusieurs lignes de texte. Le dernier saut de ligne n'est pas masqué et représente la fin de la commande.
a\

texte\[entrée]
texte\[entrée]
texte [entrée]

1 Ajouter les lignes de texte après chaque ligne spécifiée (add).
i\ texte\[entrée]
texte\[entrée]
texte [entrée]
1 Insérer les lignes de texte avant chaque ligne spécifiée (insert).
c\ texte\[entrée]
texte\[entrée]
texte [entrée]
2 Remplacer les ligne spécifiées par les lignes de texte (change).
Négation de la commande
!commande La commande s'exécutera sur toutes les lignes sauf celles spécifiées dans l'adresse.