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:shells:bash-vii-globs-etendus-regex [07/10/2015 18:04] milou [Bash : Variables, globs étendus, ERb, ERe] |
doc:programmation:shells:bash-vii-globs-etendus-regex [07/10/2015 18:24] milou [Correspondance de motifs avec les expressions rationnelles] |
||
---|---|---|---|
Ligne 88: | Ligne 88: | ||
>Cela signifie : liste-moi le ou les fichiers dont le nom ne comporte pas (''!'') | >Cela signifie : liste-moi le ou les fichiers dont le nom ne comporte pas (''!'') | ||
+ | > | ||
>soit "zéro ou plein de caractères" (''*'') puis ''jpg'' | >soit "zéro ou plein de caractères" (''*'') puis ''jpg'' | ||
+ | > | ||
>soit "zéro ou plein de caractères" (''*'') puis ''bmp'' | >soit "zéro ou plein de caractères" (''*'') puis ''bmp'' | ||
- | <code> | + | <file config retour de la commande> |
/home/hypathie/Test/nom.txt | /home/hypathie/Test/nom.txt | ||
- | </code> | + | </file> |
>C'est le chemin absolu (nom complet) du (ou des) autre(s) fichiers que ceux finissant par ''jpg'' ou ''bmp''. | >C'est le chemin absolu (nom complet) du (ou des) autre(s) fichiers que ceux finissant par ''jpg'' ou ''bmp''. | ||
Ligne 107: | Ligne 109: | ||
</code> | </code> | ||
- | <code> | + | <file config retour de la commande> |
nom.txt | nom.txt | ||
- | </code> | + | </file> |
>C'est le nom simplifié | >C'est le nom simplifié | ||
Ligne 148: | Ligne 150: | ||
- Contrairement à la correspondance simple rappelée au-dessus les doubles crochets sont obligatoires. C'est eux qui enclenchent le mécanisme de comparaison. On peut mettre un double égal, pour plus de clarté.\\ | - Contrairement à la correspondance simple rappelée au-dessus les doubles crochets sont obligatoires. C'est eux qui enclenchent le mécanisme de comparaison. On peut mettre un double égal, pour plus de clarté.\\ | ||
- Le "métacaractère" ou glob simple ''*'' signifie "un nombre quelconque de caractères" et le ''?'' signifie "un seul caractère", comme pour les globs simples.\\ | - Le "métacaractère" ou glob simple ''*'' signifie "un nombre quelconque de caractères" et le ''?'' signifie "un seul caractère", comme pour les globs simples.\\ | ||
- | - CES SIGNIFICATIONS SONT CONSERVÉES lors de l'emploi des globs étendus, et leurs significations et conservée mais s'applique à une syntaxe différentes dans les expressions régulières.\\ | + | - CES SIGNIFICATIONS SONT CONSERVÉES lors de l'emploi des globs étendus, et leurs significations sont conservées mais s'appliquent à une syntaxe différente dans les expressions régulières.\\ |
- Ne surtout pas mettre de ''" "'' autour de ''*'' : le shell chercherait alors les chaînes dont le premier caractère est une ''*'', ni dans les cas simples, ni lorsqu'on utilise les motifs étendus. | - Ne surtout pas mettre de ''" "'' autour de ''*'' : le shell chercherait alors les chaînes dont le premier caractère est une ''*'', ni dans les cas simples, ni lorsqu'on utilise les motifs étendus. | ||
</note> | </note> | ||
Ligne 156: | Ligne 158: | ||
Bash peut utiliser les expressions régulières mais de façon restreinte ; | Bash peut utiliser les expressions régulières mais de façon restreinte ; | ||
- | * elles ne peuvent pas être utilisée comme modèle de comparaison avec des noms de fichier ou pour effectuer des recherches en ligne de commandes. | + | * elles ne peuvent pas être utilisées comme modèle de comparaison avec des noms de fichier ou pour effectuer des recherches en ligne de commandes. |
* elles ne peuvent pas servir à modifier le contenu d'un fichier. | * elles ne peuvent pas servir à modifier le contenu d'un fichier. | ||
- | Elles servent seulement à "matcher" des variables, et elles ne s'utilisent que dans le cadres des scripts.\\ | + | Elles servent seulement à "matcher" des variables, et elles ne s'utilisent que dans le cadre des scripts.\\ |
Depuis __Bash 3.0__, on peut pour se faire utiliser l'opérateur **''=~''**.\\ | Depuis __Bash 3.0__, on peut pour se faire utiliser l'opérateur **''=~''**.\\ | ||
Cet opérateur **''=~''** permet : | Cet opérateur **''=~''** permet : | ||
- | * de vérifier la correspondre entre une chaîne (valeur d'une variable à gauche) et le modèle regex à droite ; | + | * de vérifier la correspondance entre une chaîne (valeur d'une variable à gauche) et le modèle regex à droite ; |
* ou encore de vérifier la correspondance entre une variable (constituée d'une chaîne de caractères littérales), et une variable constituée d'une regex. | * ou encore de vérifier la correspondance entre une variable (constituée d'une chaîne de caractères littérales), et une variable constituée d'une regex. | ||
Ligne 171: | Ligne 173: | ||
Si la syntaxe du pattern n'est pas valide le code de retour est 2.\\ | Si la syntaxe du pattern n'est pas valide le code de retour est 2.\\ | ||
- | Lorsqu'une chaîne correspond, chacune des parties du motif sont disponibles dans la variable ''$BASH_REMATCH''. | + | Lorsqu'une chaîne correspond, chacune des parties du motif est disponible dans la variable ''$BASH_REMATCH''. |
</note> | </note> | ||
==== Caractères servant aux expressions régulières de correspondance avec une variable==== | ==== Caractères servant aux expressions régulières de correspondance avec une variable==== | ||
Ligne 273: | Ligne 275: | ||
> '' ^ '' : début de l'expression | > '' ^ '' : début de l'expression | ||
- | > ''<nowiki>([[:alpha:][:blank:]]*)</nowiki>'' : | + | > ''<nowiki>([[:alpha:][:blank:]]*)</nowiki>'' : |
+ | > | ||
>entre parenthèses: première sous-expression, | >entre parenthèses: première sous-expression, | ||
- | >avec une paire de crochets contenant deux autres paires de crochets ''[:apha:]'' et ''[:blank:]'', | + | > |
+ | >avec une paire de crochets contenant deux autres paires de crochets ''[:apha:]'' et ''[:blank:]'', | ||
+ | > | ||
>avec ''*'' pour signifier que le groupe [alpha et blank] doivent apparaître 0 ou plusieurs fois ; suivi d'un espace. | >avec ''*'' pour signifier que le groupe [alpha et blank] doivent apparaître 0 ou plusieurs fois ; suivi d'un espace. | ||
> '' - '' : un tiret avec un espace après comme dans l'expression littérale. | > '' - '' : un tiret avec un espace après comme dans l'expression littérale. | ||
- | > ''<nowiki>([[:digit:]]*) - ([[:alpha:]]?)</nowiki>'' : une sous expression faite d'un groupe composé d'un nombre quelconque d'alphanumérique, un espace, un tiret, une autre sous-expression qui apparaît 0 ou 1 fois (''?''). | + | > ''<nowiki>([[:digit:]]*) - ([[:alpha:]]?)</nowiki>'' : une sous expression faite d'un groupe composé d'un nombre quelconque d'alphanumérique, un espace, un tiret, une autre sous-expression qui apparaît |
+ | > | ||
+ | >0 ou 1 fois (''?''). | ||
- | > La sous-expression ''(.*)'' signifie n'importe quel nombre ( ''*'' ) de tout caractères (''.''), | + | > La sous-expression ''(.*)'' signifie n'importe quel nombre ( ''*'' ) de tous caractères (''.''), |
- | >puis littéralement ''jpg'', | + | > |
+ | >puis littéralement ''jpg'', | ||
+ | > | ||
>puis ''$'' qui signifie fin de l'expression. | >puis ''$'' qui signifie fin de l'expression. | ||