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 [21/09/2013 19:07] 127.0.0.1 modification externe |
doc:programmation:shell:regexp [22/09/2013 09:54] smolski [Introduction] |
||
---|---|---|---|
Ligne 8: | Ligne 8: | ||
* Création par **smolski** 26/08/2013 | * Création par **smolski** 26/08/2013 | ||
* Testé par <...> le <...> | * Testé par <...> le <...> | ||
- | * Commentaires sur le forum : [[http://debian-facile.org/viewtopic.php?id=1038 | Lien vers le forum concernant ce tuto]] | + | * Commentaires sur le forum : [[http://debian-facile.org/viewtopic.php?id=1038 | Lien vers le forum concernant ce tuto]]((N'hésitez pas à y faire part de vos remarques, succès, améliorations ou échecs !)) |
- | >N'hésitez pas à y faire part de vos remarques, succès, améliorations ou échecs ! | + | === Nota === |
+ | |||
+ | Contributeurs, les FIXME sont là pour vous aider, supprimez-les une fois le problème corrigé ou le champ rempli ! | ||
===== Utilisation ===== | ===== Utilisation ===== | ||
Ligne 23: | Ligne 25: | ||
//Même si c'est souvent un exercice de l'esprit, ça vaut le coup de faire l'effort d'apprendre à les utiliser.// | //Même si c'est souvent un exercice de l'esprit, ça vaut le coup de faire l'effort d'apprendre à les utiliser.// | ||
- | Attention, il existe plusieurs syntaxes de regexp qui diffèrent un peu selon les programmes, pas pour ennuyer l'utilisateur, mais il s'agit de choix faits pour des raisons de fonctionnalités et d'optimisation. \\ | + | <note warning>**Attention**, il existe plusieurs syntaxes de regexp qui diffèrent un peu selon les programmes, pas pour ennuyer l'utilisateur, mais il s'agit de choix faits pour des raisons de fonctionnalités et d'optimisation. \\ |
- | Il faut donc savoir si vous utilisez la norme **POSIX**, **perl**, **python**... | + | Il faut donc savoir si vous utilisez la norme **POSIX**, **perl**, **python**...</note> |
À noter que, concernant le shell (la ligne de commande) vous allez aussi trouver le mot **Glob**. \\ | À noter que, concernant le shell (la ligne de commande) vous allez aussi trouver le mot **Glob**. \\ | ||
Ligne 36: | Ligne 38: | ||
Les //regexp// des [[manuel:shell]] sont des règles de filtrage permettant de sélectionner des fichiers selon leur nom ou leur emplacement. \\ | Les //regexp// des [[manuel:shell]] sont des règles de filtrage permettant de sélectionner des fichiers selon leur nom ou leur emplacement. \\ | ||
- | Ces règles ne sont pas transmises au programme tel quel mais sont remplacées par le shell utilisé. | + | Ces règles ne sont pas transmises au programme tel quel mais sont remplacées par le shell utilisé, aussi, pour la commodité de ce tuto et sauf indication contraire, nous utiliserons ici le shell [[:doc:programmation:bash]]. |
- | + | ||
- | Pour la commodité de ce tuto, sauf indication contraire, nous utiliserons ici le shell [[:doc:programmation:bash]]. | + | |
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 : | ||
Ligne 48: | Ligne 48: | ||
<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 peut ê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. | ||