Outils pour utilisateurs

Outils du site


linux:sed

Ceci est une ancienne révision du document !


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)