Vous n'êtes pas identifié(e).
L'icône rouge permet de télécharger chaque page du wiki visitée au format
PDF et la grise au format ODT →
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente Prochaine révision Les deux révisions suivantes | ||
doc:programmation:shell:regexp [22/09/2013 09:26] smolski [Introduction] |
doc:programmation:shell:regexp [22/09/2013 09:58] smolski [Introduction] |
||
---|---|---|---|
Ligne 41: | Ligne 41: | ||
Par exemple pour cette commande [[:doc:systeme:ls]] dont l'option **-d** permet à **ls** de lister uniquement les répertoires, sans leur contenu : | Par exemple pour cette commande [[:doc:systeme:ls]] dont l'option **-d** permet à **ls** de lister uniquement les répertoires, sans leur contenu : | ||
- | <code bash> | + | <code user> |
ls -d *</code> | ls -d *</code> | ||
- | C'est bash qui va **interpréter** la regexp * (étoile) et la remplacer par tout le contenu du répertoire rendu ainsi lisible pour la commande ls et son action sur chacun d'eux. | + | C'est bash qui va **interpréter** la regexp * (étoile) et la remplacer par **tout le contenu du répertoire** rendu ainsi lisible pour la commande **ls** et son action sur chacun d'eux comme ici par exemple : |
- | fichier1 fichier2 … dossier1 … | + | fichier1 fichier2 … dossier1 … |
<note important>**ATTENTION !** | <note important>**ATTENTION !** | ||
- | De par leur statut de caractères spéciaux, les ''regexp'' ne peuvent pas être utilisées n'importe comment, leur rédaction demande une vrai connaissance de ce que l'on désire faire au final.</note> | + | De par leur statut de caractères spéciaux, les **regexp** ne peuvent pas être utilisées n'importe comment, leur rédaction demande une vrai connaissance de ce que l'on désire faire au final.</note> |
Tout d'abord, un exemple pour appréhender les notions utilisées dans cette page. \\ | Tout d'abord, un exemple pour appréhender les notions utilisées dans cette page. \\ | ||
Ligne 59: | Ligne 59: | ||
==== Syntaxes ==== | ==== Syntaxes ==== | ||
- | Pour ces **regexp**, __Différents programmes__ //utilisent// __différentes syntaxes__, de ce fait leur __symbolique peut être différente__ il faut donc bien distinguer le contexte où interviennent les **regexp**. | + | Pour ces **regexp**, __différents programmes__ //utilisent// __différentes syntaxes__, de ce fait leurs __symboliques peuvent être différentes__ il faut donc bien distinguer le contexte où interviennent les **regexp**. |
- | Par exemple, un **regexp** destiné à l'utilisation d'une commande [[:doc:systeme:sed]], [[:doc:systeme:find]], [[:doc:systeme:locate]] ou [[:doc:systeme:grep]], devra être écrit différemment dans le contexte de __l'utilisation d'une commande **bash**__ (voir : [[commande:les_metacaracteres | Bash - Les metacaractères (Pattern - Glob)]]). | + | Par exemple, un **regexp** destiné à l'utilisation d'une commande [[:doc:systeme:sed]], [[:doc:systeme:find]], [[:doc:systeme:locate]] ou [[:doc:systeme:grep]], devra être écrit différemment que dans le contexte de __l'utilisation d'une commande **bash**__ (voir : [[commande:les_metacaracteres | Bash - Les metacaractères (Pattern - Glob)]]). |
//Idem pour des contextes différents...// | //Idem pour des contextes différents...// | ||
Pour être clair dans ce wiki, | Pour être clair dans ce wiki, | ||
- | - nous indiquerons le terme REGEXP pour ce qui concerne le contexte //find - locate - grep - sed// | + | - nous indiquerons le terme **REGEXP** pour ce qui concerne le contexte //find - locate - grep - sed// |
- | - et nous utiliserons le terme GLOB pour ce qui concerne le contexte du //bash//. | + | - et nous utiliserons le terme **GLOB** pour ce qui concerne le contexte du //bash//. |
==== Illustration ==== | ==== Illustration ==== | ||
Ligne 77: | Ligne 77: | ||
== Pour bash : == | == Pour bash : == | ||
- | Pour avoir la même expression pour bash, il faut écrire : ''pl{o,i}p'' | + | Pour avoir la même expression avec bash, il faudra écrire : ''pl{o,i}p''. \\ |
- | + | Nous voyons donc que dans le contexte **bash**, il faudra utiliser((à la place des caractères //crochets// ''[...]'' de l'exemple précédent)) les caractères //accolades// ''{ }'' pour définir les **glob** concernant les mêmes chaînes de caractères ''plop plip''. | |
- | Nous voyons que dans le contexte **bash**, il faudra plutôt utiliser les caractères //accolades// ''{ }'' pour définir les **glob** concernant les mêmes chaînes de caractères ''plop plip''. | + | |
==== Conclusion ==== | ==== Conclusion ==== | ||
- | Il y a donc bien lieu d'__utiliser les bons termes__ pour rédiger une commande au résultat identique __selon le bon contexte__. \\ | + | Il y a donc bien lieu d'__//utiliser les bons termes//__ pour rédiger une commande au résultat identique __//selon le bon contexte//__. \\ |
C'est pourquoi ce tuto s'attache particulièrement à différencier ce contexte d'utilisation. | C'est pourquoi ce tuto s'attache particulièrement à différencier ce contexte d'utilisation. | ||