linux:sed
Ceci est une ancienne révision du document !
Table des matières
mémo sed
Pas mal de scripts sur http://sed.sourceforge.net/grabbag/scripts/ (dont iso2html.sed)
Cette page existe en plus complet sur http://cli.asyd.net/home/filtres/sed
Une autre doc assez complète sur http://okki666.free.fr/docmaster/articles/linux130.html
Sans oublier le bon “Langages de scipts sous linux” de Christophe Blaess chez Eyrolles.
- sed -e expression : applique l'expression au flux d'entrée
- sed -ne expression : idem, mais n'affiche rien en sortie, sauf si on le précise avec p
- sed -i -e expression fichier : applique l'expression au fichier (pas besoin de préciser entrée sortie). Attention, pas de sauvegarde de l'ancien fichier (sauvegarde en .bak avec sed -i.bak -e '…').
expression est en général de la forme
- n commande : applique la commande à la ligne n
- n,m commande : : applique la commande aux lignes de n à m
- /pattern/ commande : applique la commande aux lignes qui vérifient le pattern
- /pattern/,/pattern2/ commande : applique la commande aux lignes qui se trouvent entre une ligne qui vérifie pattern et une autre qui vérifie pattern2
- /pattern/,$ : applique la commande entre la première ligne qui vérifie pattern (incluse) et la fin du fichier.
Commandes
- = : affiche le n° de la ligne
- a : ajoute des lignes, par exemple :
sed -e '/pattern/a\ ajout d'une ligne\ et d'une autre.' < fichier_src > fichier_dest
- c : change des lignes complètes, ex (vire le corps des fonctions, blocs compris entre accolades ouvrantes/fermantes qui débutent une ligne, et remplace par “[… corps de la fonction …]”
sed -e '/^{/,/^}/c\ [... corps de la fonction ...]' < fichier.c > resume
- d : efface le buffer (et repart au début du script avec la ligne d'entrée suivante)
- D : efface le début du buffer jusqu'au premier \n et repart au début du script (avec une nouvelle ligne si le buffer a été vidé complètement).
- i : insère avant la ligne.
- l : idem p avec les caractères de contrôle
- n : passe à la ligne suivante (sans appliquer les commandes suivantes à la ligne courante) et y applique la commande suivante.
- N : charge la ligne suivante dans le buffer
- s/motif/remplacement/opt
- p : affiche la ligne
- P : affiche le début du buffer jusqu'au premier \n (il reste dans le buffer).
- y/car_src/car_dest/ : substitue des caractères par d'autres
rechercher/remplacer
s/search/replace/opt où opt peut être
- rien : la 1re occurence est remplacée
- g : toutes les occurences sont remplacées
- N : seule la Nième occurence est remplacée
- p : affiche la ligne si subtitution
- w fichier : envoie le résultat de la substitution dans un fichier
- I : insensible à la casse (extension GNU)
Caractères particulier pour le remplacement :
- \i ième référence arrière
- & chaine complète qui correspond au pattern
Holdspace
Il est aussi possible d'utiliser le “holdspace” (un buffer secondaire).
- P affiche la première ligne du pattern space.
- x échange les contenus du pattern space et du hold space.
- g remplace le contenu du pattern space par celui du hold space.
- G ajoute un caractère nouvelle ligne et le contenu du hold space au pattern space.
- h remplace le contenu du hold space par celui du pattern space.
- H ajoute un caractère nouvelle ligne et le contenu du pattern space au hold space.
- N ajoute un caractère nouvelle ligne et une nouvelle ligne de données au pattern space (s'il n'y a plus de données à lire, l'emploi de cette commande cause la fin du programme).
linux/sed.1187026508.txt.gz · Dernière modification : 13/08/2007 19:46 (modification externe)