# Travaux pratiques - Sed - UNIX

## Utilisation simple

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

<details>
<summary>Voir la solution</summary>

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

</details>

## Utilisation d'un fichier de commandes

É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`.

<details>
<summary>Voir la solution</summary>

```bash
sed -f decalage.sed
```

```bash
# 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`.

</details>

## Substitution en début de ligne

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

<details>
<summary>Voir la solution</summary>

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

> 📗 On aurait pu aussi utiliser la commande `cut`.

</details>

## Substitution dans toute la ligne

É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>>.`).

<details>
<summary>Voir la solution</summary>

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

</details>
