expressions sed

Marc Chantreux marc.chantreux at ulpmm.u-strasbg.fr
Sun Jan 27 09:57:18 CET 2008


re,

je réponds dans le désordre ... mais c'est pour être le plus clair
possible.

> Mon pb est de comprendre quand le \ signifie "échapper le caractère qui suit" et quand il signifie "caractère 
> backslash.

l'utilisation du \ en sed est en fait plus deductible que dans bien des
moteurs mai aussi tellement plus chiante à l'écriture! Il y a deux règles: 

Lorsque je suis dans un contexte de description du motif ( hors de [],
donc), tous les caractères qui ont une signification pour le moteur est
protégé (a l'exception de *). Ainsi \( ouvre une capture et ( est le
symbole (.

Lorsque je suis dans un contexte d'une définition de métacaractère (dans
[], donc), il n'existe plus que 2 caractères spéciaux.

* ] qui ferme la définition du métacaractère
* - qui est le séparateur entre 2 extrémités d'une suite ( a-z )

Ces caractères perdent leur signification si ils sont placés de telle
facon que leur utilisation *en temps que caractère spécial* est un
non-sens (oui, je reviens avec ca!). le \ est donc inutile.

donc je reprend mes exemples et j'en ajoute un:

* []

quel intéret de déclarer un metacaractère vide? Aucun? donc le ] est un
simple symbole.

> > [a-z] < - a un sens 

n'importe quel caractère entre a et z 

> > [az-] < - n'a pas de sens

a, et de z à l'infini? je maintiens: ca n'a pas de sens

> > [-az] < - n'a pas de sens

z, et de l'infini à a ? je maintiens: ca n'a pas de sens


> Apparemment, le \ est toujours pris comme un caractère quand il est entre [],

u got it! tout simplement parcequ'il est inutile :)

> et jamais en dehors, d'où la difficulté 

ben ... je trouve au contraire que c'est ultra logique:

* jamais quand dans []
* toujours quand hors []

> quand on cherche du crochet fermant et du tiret (et autre chose), ça me parait pa immédiat de savoir qu'il faut 
> commencer par crochet fermant puis tiret puis le reste.

j'espere que mon explication t'aidera.


More information about the Shell mailing list