next up previous contents index
suivant: Exemples avancés monter: Formulation des requêtes précédent: Les Commandes   Table des matières   Index

Les symboles particuliers

Les symboles particuliers sont tous ceux des expressions régulières à l'exception des symboles « + » et « | ». A cette liste, on rajoute les symboles de la commande de substitution « s ». Ces symboles sont :

 Symbole   Description  
 « \( » et « \) »   Définit une portion d'expression régulière.  
 « \$n$ »   Ne fait pas partie des expressions régulières mais représente la $n^{i\grave{e}me}$ portion d'une expression régulière.  
 « & »   Ne fait pas partie des expressions régulières mais représente la portion de ligne d'entrée qui correspond à l'expression régulière.  

Exemple 14..4 :


s/\([ \t]*function[ \t]*\)\([0-z]*\)\([ \t]*(.*)\)/#FONCTION \2/

La commande « sed » utilisée ici est la commande « s ». Sa syntaxe est :
$[$adresse1$[$,adresse2$]$s/expr$_1$/expr$_2$/$[$g$]$

On constate donc que les adresses de début et de fin sont absentes. Par conséquent, cette requête s'applique à toutes les lignes en entrée (cf. [*]). Après analyse, il apparaît que cette requête « sed » se décompose de la façon suivante :

s/
\([ \t]*function[ \t]*\)
\([0-z]*\)
\([ \t]*(.*)\)
/
#FONCTION \2
/

Nous distinguons donc trois regroupements d'expression régulière :
  1. « [ \t]*funtion[ \t]* »
  2. « [0-z]* »
  3. « [ \t]*(.*) »
Dans le second membre de la commande « s » (« #FONCTION \2 ») l'expression « \2 » référence donc la chaine correspondant à « [0-z]* ».

Analysons chaque regroupement du premier membre de cette requête : « [ \t]*funtion[ \t]* ».

Tout d'abord « [ \t]* » désigne le caractère \fbox{\textsc{space}} ou bien \fbox{\textsc{tab}} un nombre quelconque de fois. « function » représente tout simplement cette chaine de caractères. Par conséquent, « [ \t]*funtion[ \t]* » désigne la chaine « function » suivie et précédée d'espaces et de tabulations.

La seconde partie, « [0-z]* », désigne un des caractères dont le code ASCII est compris entre celui de « 0 » et celui de « z »14.3, un nombre quelconque de fois. Nous avons donc, approximativement, une chaine de caractère quelconque sans espaces ni tabulations.

La troisième partie, « [ \t]*(.*) » reprend la séquence « [ \t]* » représentant une séquence d'espaces et de tabulations un nombre quelconque de fois. « (.*) » désigne le caractère « ( », suivi de caractères quelconques un nombre indéterminé de fois (« .* »), suivi par le caractère « ) ». En conclusion, cette dernière partie représente une chaine de caractères quelconque (évuentuellement vide) encadrée par des parenthèses et précédée par un nombre quelconque d'espaces et de tabulations.

Le premier membre de cette requête « sed »,
\([ \t]*function[ \t]*\)\([0-z]*\)\([ \t]*(.*)\)
représente donc :
  1. le mot « function » précédé et suivi d'un nombre quelconque d'espaces et de tabulations,
  2. une chaine de caractères quelconques sans espaces ni tabulations,
  3. une chaine de caractères entre parenthèses précédée te suivie d'un nombre quelconque d'espaces et de tabulations.

La seconde partie de la requête « sed »,
#FONCTION \2
substitue l'ensemble de la ligne par :

Exemple 14..5 :


s/abcdef1234567890/&ghijkl/

Cette requête « sed » équivaut à :
s/abcdef1234567890/abcdef1234567890ghijkl/


next up previous contents index
suivant: Exemples avancés monter: Formulation des requêtes précédent: Les Commandes   Table des matières   Index
baudry@esme.fr