La commande sed

Description

Le mot sed signifie "éditeur de flux" (Stream EDitor).

Guide

La commande sed fonctionne analyse le flux en entrée (fichier ou autre) ligne par ligne.

Il existe deux façons d'utiliser sed :

  • La première consiste à appliquer la commande sur le flux d'entrée, et à récupérer le flux de sortie. Par exemple, on applique sed sur un fichier, et on redirige la sortie sur un autre fichier.
  • La deuxième, avec l'option sed -i, applique la commande directement sur le fichier passé en entrée.

Voici le synopsis de la commande obtenu à partir de la commande man sed

sed [OPTION]... {script-only-if-no-other-script} [input-file]...

En plus des options et du flux d'entrée, sed reçoit un script. Ce script contiendra toutes les actions à exécuter sur le flux d'entrée.

Il existe là encore deux manières de passer un script à sed :

  • On peut écrire le script directement dans la ligne de commande, avec l'option sed -e. On séparera les commandes avec des point-virgules.
  • On peut passer à sed un fichier externe contenant le script (myScriptFile), avec sed -f myScriptFile.

Exemples

sed -e '4d; 7d' test.txt
  • efface les lignes 4 et 7 (option d pour delete) du texte inclus dans fichier test.txt et affiche à l'écran le résultat (ne modifie pas test.txt).

On peut aussi utiliser des expressions régulières (regex) pour appliquer la commande sur toutes les lignes où le motif est trouvé. On décrit un motif comme ceci : /motif/

 sed '/^#/ d' test.txt 
  • supprime toutes les lignes commençant par une dièse (^ signifie début de ligne) pour l'affichage.

On peut définir une plage de texte par un interval avec : /motif1/,/motif2/

sed '/^Bonjour/,/^Au revoir/d' test.txt 
  • supprime toutes les lignes comprises entre 'Bonjour' et 'Au revoir' du texte inclus dans fichier test.txt et affiche le résultat à l'écran.

Dans le cas d'adressage par intervalle entre deux motifs, sed va répéter les commandes passées pour cet intervalle à chaque fois que l'intervalle est trouvé.

Si seul /motif1/ est présent, sed va appliquer le script sur tout ce qu'il trouvera après jusqu'à la fin du flux d'entrée.

Voir aussi


La dernière modification de cette page a été faite le 15 mai 2020 à 10:57.