Système UNIX : Programme sed | |
![]() ![]() |
Le programme sed
Le programme sed est un éditeur de texte avec ceci de particulier, c'est qu'il est un éditeur en ligne.
Contrairement aux autres éditeurs comme ed, ex et vi qui agissent sur un fichier en le modifiant directement, sed agit donc sur un fichier d'entrée pour produire une version modifiée dans un fichier de sortie distinc du fichier d'entrée, le fichier d'entrée n'étant jamais modifié lui-même. Cette caractéristique le rend très utile dans des unx_pipes et des unx_scripts.
Utilisation
Voici un exemple d'utilisation de sed qui remplace partout la chaîne de caractères Roger par la chaîne de caractères Richard dans le fichier texte. Les changements seront produits dans le fichier de sortie (à l'écran) :
station% sed 's/Roger/Richard/g' texte
La commande de substitution s et ses paramètres doivent être placés entre apostrophes pour les protéger du shell. Le g à la fin de la commande fera le remplacement de façon globale, donc partout dans le fichier. Sans l'option g, le remplacement ne se fait qu'une fois par ligne.
La commande s peut accomoder des expressions régulières. Ainsi, la commande suivante ferait la même substitution, mais cette fois à condition que la chaîne Roger se présente en début de ligne :
station% sed 's/^Roger/Richard/g' texte
Dans les deux exemples précédents, nous avons utilisé l'oblique (/) pour délimiter les chaînes de caractères source et objet, mais il est possible d'utiliser un autre caractère, surtout le l'oblique fait partie de l'une des deux chaînes (l'exemple ci-dessous utilise le +) :
station% sed -n 's+^Roger+Richard+g' texte
L'option -n de la commande sed supprime tout message que pourrait produire sed pendant son traitement.
La commande y du programme sed fait le remplacement de caractères se trouvant dans la première chaîne par le caractère à la même position dans la seconde chaîne. L'exemple qui suit en illustre le fonctionnement en faisant la conversion des lettres majuscules en lettres minuscules dans le fichier txt, spécifiant dans la chaîne source et objet tout l'alphabet en majuscule et en minuscule respectivement :
station% sed ´y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/´ txt
Si les commandes à donner au programme sed sont trop longues pour figurer sur la ligne de commande même, elles peuvent être enregistrées dans une fichier (appeleé un script sed) et le nom de ce fichier (traduire.sed dans l'exemple ci-dessous) passé au programme sed en utilisant l'option -f :
station% sed -f traduire.sed txt
Pour plus d'information sur la commande sed, lancez man sed.
![]() |
Pipes et redirection
![]() |