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 [11/09/2014 18:52] Hypathie [INDEX 2 : REGEXP communs à Perl, Emacs, vim] |
doc:programmation:shells:bash-vii-globs-etendus-regex [07/10/2015 18:13] milou [Correspondance de motifs avec les expressions rationnelles] |
||
---|---|---|---|
Ligne 2: | Ligne 2: | ||
* Objet : suite de la série de wiki visant à maîtriser bash via les différents caractère spéciaux. | * Objet : suite de la série de wiki visant à maîtriser bash via les différents caractère spéciaux. | ||
- | * Niveau requis : {{avisé}} | + | * Niveau requis : {{tag>avisé}} |
- | * Débutant, à savoir : [[:doc:systeme:commandes:le_debianiste_qui_papillonne|Utiliser GNU/Linux en ligne de commande, tout commence là !.]] :-) | + | * Commentaires : FIXME |
- | * Suivi : {{à-placer}} | + | * Suivi : |
- | * Création par [[user>Hypathie]] 10/04/2014 | + | * Création par [[user>Hypathie]] le 10/04/2014 |
- | * Testé par <Hypathie> le <Avril 2014> | + | * Testé par [[user>Hypathie]] Avril 2014 |
* Commentaires sur le forum : [[:url-invalide | Lien vers le forum concernant ce tuto]] ((N'hésitez pas à y faire part de vos remarques, succès, améliorations ou échecs !)) | * Commentaires sur le forum : [[:url-invalide | Lien vers le forum concernant ce tuto]] ((N'hésitez pas à y faire part de vos remarques, succès, améliorations ou échecs !)) | ||
- | * [[atelier:chantier:bash-les-differents-caracteres-speciaux|Vision d'ensemble]] | + | * [[doc:programmation:shells:bash-les-differents-caracteres-speciaux|Vision d'ensemble]] |
- | * [[atelier:chantier:la-page-man-bash-les-caracteres-speciaux|Bash : Détail et caractères]] | + | * [[docs:programmation:shells:la-page-man-bash-les-caracteres-speciaux|Bash : Détail et caractères]] |
- | * [[atelier:chantier:la-page-man-bash-ii-les-operateurs-lexicographiques|Bash : les opérateurs lexicographiques]] | + | * [[doc:programmation:shells:la-page-man-bash-ii-les-operateurs-lexicographiques|Bash : les opérateurs lexicographiques]] |
- | * [[atelier:chantier:page-man-bash-iii-les-operateurs-de-comparaison-numerique|Bash : les opérateurs de comparaison numérique]] | + | * [[doc:programmation:shells:page-man-bash-iii-les-operateurs-de-comparaison-numerique|Bash : les opérateurs de comparaison numérique]] |
- | * [[atelier:chantier:page-man-bash-iv-symboles-dans-les-calculs-mathematiques|Bash : les symboles dans les calculs]] | + | * [[doc:programmation:shells:page-man-bash-iv-symboles-dans-les-calculs-mathematiques|Bash : les symboles dans les calculs]] |
- | * [[atelier:chantier:page-man-bash-v-les-tableaux|Bash : les tableaux]] | + | * [[doc:programmation:shells:page-man-bash-v-les-tableaux|Bash : les tableaux]] |
- | * [[atelier:chantier:man-bash-vi-les-caracteres-de-transformation-de-parametres|Bash : les caractères de transformation de parametres]] | + | * [[doc:programmation:shells:man-bash-vi-les-caracteres-de-transformation-de-parametres|Bash : les caractères de transformation de parametres]] |
* ;-) | * ;-) | ||
+ | |||
+ | **Nota :** Contributeurs, les FIXME sont là pour vous aider, supprimez-les une fois le problème corrigé ou le champ rempli ! | ||
Ligne 30: | Ligne 32: | ||
====Rappel : les métacaractères==== | ====Rappel : les métacaractères==== | ||
- | __Le premier type de représentation symbolique__ se fait avec [[doc:programmation:shell:les-metacaracteres|les globs ou patterns simples]]((désignés aussi de "caractères génériques")) ; ils servent aux recherches sur les chaînes de caractères et se font généralement en ligne de commandes.\\ Il a été donné un simple récapitulatif des caractères utilisés ici : [[atelier:chantier:bash-les-differents-caracteres-speciaux#definition-usuelle-de-metacaractere-et-detail|définition usuelle de métacaractère"]].\\ | + | __Le premier type de représentation symbolique__ se fait avec [[doc:programmation:shell:les-metacaracteres|les globs ou patterns simples]]((désignés aussi de "caractères génériques")) ; ils servent aux recherches sur les chaînes de caractères et se font généralement en ligne de commandes.\\ Il a été donné un simple récapitulatif des caractères utilisés ici : [[doc:programmation:shells:bash-les-differents-caracteres-speciaux#definition-usuelle-de-metacaractere-et-detail|définition usuelle de métacaractère"]].\\ |
====Distinguer le "globbing" étendu des expressions régulières ==== | ====Distinguer le "globbing" étendu des expressions régulières ==== | ||
- | __Le deuxième type de de représentation symbolique__ se fait (à partir de ''bash 2.01'') avec [[atelier:chantier:bash-vii-globs-etendus-regex#les-globs-etendus|les globs étendus ]]((appelés aussi "patterns longs" ; en anglais "extended patterns")), étudiés ci-dessous ; on les utilise pour effectuer des tests de correspondances simples, en ligne de commandes ou dans des scripts, ou pour [[atelier:chantier:man-bash-vi-les-caracteres-de-transformation-de-parametres|modifier les paramètres d'une variable]].\\ | + | __Le deuxième type de de représentation symbolique__ se fait (à partir de ''bash 2.01'') avec [[atelier:chantier:bash-vii-globs-etendus-regex#les-globs-etendus|les globs étendus ]]((appelés aussi "patterns longs" ; en anglais "extended patterns")), étudiés ci-dessous ; on les utilise pour effectuer des tests de correspondances simples, en ligne de commandes ou dans des scripts, ou pour [[doc:programmation:shells:man-bash-vi-les-caracteres-de-transformation-de-parametres|modifier les paramètres d'une variable]].\\ |
====Distinguer les expressions régulières utilisable avec le shell, de celles d'autres programmes==== | ====Distinguer les expressions régulières utilisable avec le shell, de celles d'autres programmes==== | ||
Ligne 86: | 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 105: | 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 146: | 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 154: | 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 169: | 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==== |