# Expressions régulières et sed, awk et autres grep

**URL:** <https://www.debian-fr.org/t/expressions-regulieres-et-sed-awk-et-autres-grep/3589>\
**Category:** Trucs et Astuces\
**Created:** [Février 20, 2016, 12:50 UTC](https://www.debian-fr.org/t/expressions-regulieres-et-sed-awk-et-autres-grep/3589 "2016-02-20T12:50:26Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![ripat](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/r/bc79bd/32.png) [@ripat](https://www.debian-fr.org/u/ripat)\
**Post date:** [Février 20, 2016, 12:50 UTC](https://www.debian-fr.org/t/expressions-regulieres-et-sed-awk-et-autres-grep/3589/1 "2016-02-20T12:50:26Z")

</div>

J’ai eu récemment à faire un petit script pour modifier une adresse IP noyée dans un fichier (généré par iptables-save).

Le choix qui semble s’imposer est d’utiliser sed. J’avais le souvenir que que sed (System V) ne supportait que les BRE (Basic Regular Expressions).

[quote]The sed utility shall support the BREs described in the Base Definitions volume of IEEE Std 1003.1-2001, Section 9.3, Basic Regular Expressions.  
[opengroup.org/onlinepubs/000 … s/sed.html](http://www.opengroup.org/onlinepubs/000095399/utilities/sed.html)[/quote]

Là où awk, grep -E, perl ou PHP se contenteraient d’un masque comme:

```auto

```

Avec, sed (BRE), on se retrouve avec:

```auto

```

Chaque () ou {} doit être échappé. Bonjour la lisibilité! (oui, je sais, ce motif capturera des IP comme 999.645.358.444 mais on peut supposer que iptables n’acceptera jamais ce genre d’adresse! Il n’y a donc aucune raison qu’une IP comme celle-là se trouve dans les tables d’iptables. Et puis, ici le but n’est pas de faire de la validation d’adresse mais juste un remplacement)

Alors, réjouissez-vous, heureux utilisateurs de l’implémentation debian de sed, il existe une option -r qui permet l’utilisation des ERE (Extended RE). Et dire qu’elle se trouvait bien en évidence dans mon fichier man! 😒

```auto

```

Produit le même résultat que

```auto

```

---

<div class="post-metadata">

**Author:** ![mattotop](https://www.debian-fr.org/user_avatar/www.debian-fr.org/mattotop/32/3942_2.png) [@mattotop](https://www.debian-fr.org/u/mattotop)\
**Post date:** [Février 20, 2016, 12:50 UTC](https://www.debian-fr.org/t/expressions-regulieres-et-sed-awk-et-autres-grep/3589/2 "2016-02-20T12:50:27Z")

</div>

de toutes façons, je n’etais pas assez à l’aise pour partir dans des ERE, et je n’avais appris que les BRE, me semble t il.  
Mais maintenant, je saurais que si un pattern ne passe pas avec sed, c’est sans doute qu’il faut lui passer un -r.  
Merci !
