Vous êtes sur la page 1sur 3

Introduction à la commande sed

SED est un éditeur de flux qui fonctionne sur une entrée de commandes ou des fichiers de texte.

Il permet de réaliser effectuer les opérations suivantes :

1. Sélectionnez le texte (Chercher)


2. Substituer du texte (Chercher/Remplacer)
3. Ajouter des lignes au texte
4. Supprimer des lignes du texte Modifier (ou conserver) un fichier original
5. La recherche de motif peut se faire sur un caractère, suite de caractères mais aussi par des
expressions régulières.

Syntaxe et exemples d’utilisation


Syntaxe : sed [options] 'fonctions' <fichier-entrée>

L'option -f, permet de fournir un fichier script contenant les commandes à exécuter. Les autre options
permettent de choisir les opérations à exécuter.

La sortie de la commande est, par défaut, affichée à l'écran mais peut être redirigée, dans un fichier.

Pour réaliser ses opérations copiez le fichier /etc/passwd dans un fichier nommé cible.

Imaginons le texte suivant dans le fichier rose-tatoo.txt :

1 The pictures tell the story

2 This life had many shades

3 I'd wake up every morning and before I'd start each day

4 I'd take a drag from last nights cigarette

5 That smoldered in its tray

6 Down a little something and then be on my way

8 I traveled far and wide

9 And laid this head in many ports

10 I was guided by a compass

11 I saw beauty to the north

12 I drew the tales of many lives

13 And wore the faces of my own

14 I had these memories all around me

15 So I wouldn't be alone
Sélectionner des lignes d’un fichier texte
Pour sélectionner du texte, on utilise le flag p (print).

Voici un exemple d’utilisation de sed pour sélectionner des lignes :

 Sélectionner la ligne 5 : sed -n '5p' cible


 Sélectionner les lignes 1 à 5 : sed -n '1,5p' cible
 Sélectionner les lignes 1 et 5 : sed -n '1p ; 5p' cible

Si l’on désire sélectionner des portions spécifiques de texte avec différents intervalles de lignes, on
peut utiliser l’option -e. Cela permet de combiner plusieurs sélections de texte.

Par exemple pour afficher les lignes de 1 à 4 et de 5 à 10 d’un fichier : sed -n -e '1,5 p' -e '8,10p' cible

Sélectionner des lignes d'un fichier texte avec la commande sed


Le premier numéro indique la ligne de départ.

Le deuxième numéro dit SED Quelles lignes après la ligne de départ que nous voulons voir.

Le numéro 2 signifie chaque deuxième ligne, 3 signifie chaque troisième ligne, etc. Par exemple la
commande sed -n '1~2p' cible affiche toutes les deux 2 lignes d’un fichier nommé cible à partir de la
ligne 1 et la commande sed -n '1~3p' cible affiche toutes les 3 lignes.

Il est aussi possible de sélectionner des lignes d'un fichier texte en encadrant ce dernier par deux
motifs. Par exemple sed -n '/root/,/bin/p' cible

Supprimer un texte
Le flag d(flag) permet de supprimer des lignes d’un fichier. Il est possible d’indiquer à la commande
les numéros des lignes à supprimer ou encadrer ces lignes par des motifs. La syntaxe est :

sed '/motif1/,/motif2/d' [fichier]

Par exemple :

 Supprimer la ligne 5 : sed '5d' cible


 Supprimer les lignes 1 à 5 : sed '1,5d' cible
 Supprimer les lignes 1 et 5 : sed '1d ; 5d' cible
 Supprimer toutes les lignes situées entre les mots « daemon » et « ssh » : sed
'/daemon/ ,/sshd/d' cible

Chercher motif dans texte


sed est un outil aussi puissant que la commande grep pour la rechercher de chaines de caractères
dans un texte. La syntaxe d’une recherche : sed -n '/motif/p' [fichier]

sed -n "/[1-9][0-9][0-9][0-9]/p" cible affiche toutes les lignes contenant un chiffre entre 1000 et 1999.
Bien sûr, en reprenant les explications précédentes, il est plus rapide d’afficher par numéro de lignes :

Substitution de chaines de caractères dans un texte

sed -n 's/motif_a_chercher/texte_remplacement/g' [texte]

Le s indique une substitution. Le premier paramètre est la chaîne à et le second indique le texte de
remplacement.
Par exemple ici, on remplace le mot Ubuntu par Debian : echo "J'aime Ubuntu"| sed
's/Ubuntu/Debian/g'

Pour rendre sed insensible à la casse, on ajoute i à la fin comme dans cet exemple : echo "J'aime
Ubuntu"| sed 's/ubuntu/Debian/gi'

Le flag g pour global indique de remplacer toutes les occurrences du fichier.

On peut aussi indiquer quelle occurrence d’une ligne remplacer à travers son numéro. Par exemple,
pour remplacer la troisième occurrence utilisez /3 comme dans l’exemple suivants : sed ‘
s/root/toor/3’ cible. Il est aussi possible de cibler une ligne particulière. Par exemple : sed ‘ 3
s/root/toor/g’ cible permet de limiter la substitution à la ligne numéro 3.

L’option -i permet de modifier le fichier. Dans la commande sed ‘ 3 s/root/toor/g’ cible n’imprime
rien sur la sortie du terminal mais modifier directement le fichier.

Utiliser la valeur d’une variable dans une commande sed


La commande sed peut stocker le résultat d’une recherche d’un motif dans une variable. Pour cela, il
faut l’encadrer avec des parenthèses. On l’appelle ensuite avec \1, \2 qui correspond au numéro de la
parenthèse dans le motif.

Imagions que l’on cherche le mot root.

Ici motif est encadrer dans la première parenthèse, donc on le stocke dans la variable \1.

echo "Exemple de motif à rechercher"| sed -nre 's/.*(root).*/\1/p'

Vous aimerez peut-être aussi