Corrigé du TP SED - UNIX

Utilisation simple

Énoncé

Écrivez une commande sed transformant la chaîne moins en plus. Appliquez-la à Vous aurez moins de budget.

Solution

sed -e 's/moins/plus/g'

Utilisation d'un fichier de commandes

Énoncé

Écrivez un commande sed transformant toutes les lettres minuscules en leur suivante lexicographique (cas particulier : z se transforme en !). Rappel : vous pouvez utiliser un fichier pour rassembler plusieurs commandes sed.

Solution

sed -f decalage.sed
# fichier "decalage.sed"
s/z/!/g
s/y/z/g
s/x/y/g
s/w/x/g
s/v/w/g
s/u/v/g
s/t/u/g
s/s/t/g
s/r/s/g
s/q/r/g
s/p/q/g
s/o/p/g
s/n/o/g
s/m/n/g
s/l/m/g
s/k/l/g
s/j/k/g
s/i/j/g
s/h/i/g
s/g/h/g
s/f/g/g
s/e/f/g
s/d/e/g
s/c/d/g
s/b/c/g
s/a/b/g

Cette solution peut sembler étrange, car les substitutions ne se font pas dans l'ordre alphabétique mais dans l'ordre alphabétique inverse. C'est nécessaire car sinon tous les a se transforment en b, puis tous les b (y compris ceux qui sont nouvellement transformés) en c, etc., pour finir par un texte intégralement composé de lettres a.

Substitution en début de ligne

Énoncé

Écrivez une commande sed qui affiche uniquement le début de chaque ligne du fichier /etc/passwd jusqu'au premier caractère :.

Solution

sed -e 's/^\([^:]*\).*$/\1/' /etc/passwd

On aurait pu aussi utiliser la commande cut.

Substitution dans toute la ligne

Énoncé

Écrivez une commande sed qui remplace les couples de guillemets anglais par un couple de guillemets français (Ceci est un "exemple" qui doit "fonctionner". doit donner Ceci est un <<exemple>> qui doit <<fonctionner>>.).

Solution

sed -e 's/"\([^"]*\)"/<<\1>>/g'

Philippe.Houdry@inist.fr