Breadcrumbs

1.Préambule 

$cat test.txt
Bonjour, Ceci est un fichier de test. Ici la ligne numéro 4. # ceci pourrait être un commentaire Ici la ligne numéro 7. Au revoir
$

 2.Adressage

2.1 Adressage par ligne 

sed -e '4d; 7d' test.txt

La commande (delete) indique que l'on va supprimer la ligne.

 

L'option -e permet de passer plusieurs commandes à la suite.

sed '4,7 d' test.txt

Cette commande va effacer toutes les lignes comprises entre la ligne 4 et la ligne 7.

 sed '4,7 d' test.txt

 2.2.Adressage par motif

 On décrit un motif comme ceci : /regex/

Supprimer toutes les lignes commençant par une dièse (le ^ est un métacaractère signifiant début de ligne).

$ sed '/^#/d' test.txt
Bonjour,
Ceci est un fichier de test.
Ici la ligne numéro 4.
Ici la ligne numéro 7.
Au revoir

On peut utiliser une intervalle avec : /motif1/,/motif2/

sed '/^Bonjour/,/^Au revoir/d' test.txt

 Supprimera toutes les lignes comprises entre 'Bonjour' et 'Au revoir'.

 

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.

supprime les 7 lignes à partir de la 1ere ligne commençant par #

sed '/^#/,7 d' test.txt

3.Mode silencieux

Sed ne doit afficher par défaut aucune ligne. Seules les lignes intéressantes seront affichées, avec la commande p (print). Pour passer en mode "silencieux", il faut utiliser l'optionsed -n

Lancez :sed -n '/Ici/p' test.txt

$ sed -n '/Ici/p' test.txt
Ici la ligne numéro 4.
Ici la ligne numéro 7

.

4.Substitution, translittération

4.1.Substitution

Bien évidemment, sed permet de remplacer du texte avec des regex. On peut utiliser la syntaxe habituelle, ou la syntaxe étendue avecsed -r.

La substitution s'écrit comme ceci : s/motif/substitut/
Par défaut, elle s'effectue sur la première occurrence du motif, sauf si on lui ajoute l'option g comme ceci : s/motif/substitut/g
On peut aussi choisir l'occurrence voulue, avec par exemple s/motif/substitut/2 pour la deuxième occurrence.

Si le motif est une regex, le substitut n'en est pas une. Il accepte quand même le métacaractère &, ainsi que les références arrières telles que \1 (de 1 à 9).

Quelques exemples :

-sed -re 's/^# *//' fichierdécommente les lignes commentées (commençant par une dièse), et supprime les espaces en début de ligne (le * est un métacaractère signifiant 0 ou plus).

-sed -re 's/\t/    /g' fichierremplace les tabulations par 4 espaces.

4.2.Translittération

La translittération permet d'échanger certains caractères avec d'autres caractères.

On l'écrit comme ceci : y/liste1/liste2/.
Par exemple, pour supprimer les accents sur les e dans notre fichier test.txt, on ferased -re 'y/éèê/eee/' test.txt

$ sed -re 'y/éèê/eee/' test.txt
Bonjour,
Ceci est un fichier de test.
Ici la ligne numero 4.
# ceci pourrait etre un commentaire
Ici la ligne numero 7.
Au revoir


Cet article est tiré du site: http://fr.openclassrooms.com/informatique/cours/la-commande-sed

Add comment


Security code
Refresh

Go to Top
Template by JoomlaShine