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 [04/06/2014 19:44] Hypathie [Correspondance de motifs avec les expressions rationnelles] |
doc:programmation:shells:bash-vii-globs-etendus-regex [06/07/2014 12:11] Hypathie [Correspondance de motifs avec les expressions rationnelles] |
||
---|---|---|---|
Ligne 5: | Ligne 5: | ||
* Débutant, à savoir : [[:doc:systeme:commandes:le_debianiste_qui_papillonne|Utiliser GNU/Linux en ligne de commande, tout commence là !.]] :-) | * Débutant, à savoir : [[:doc:systeme:commandes:le_debianiste_qui_papillonne|Utiliser GNU/Linux en ligne de commande, tout commence là !.]] :-) | ||
* Suivi : {{à-placer}} | * Suivi : {{à-placer}} | ||
- | * Création par **Hypathie** 10/04/2014 | + | * Création par [[user>Hypathie]] 10/04/2014 |
* Testé par <Hypathie> le <Avril 2014> | * Testé par <Hypathie> le <Avril 2014> | ||
- | * Commentaires sur le forum : [[url | 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 !)) |
- | **RAPPEL DU PLAN DE LA SÉRIE : **\\ | ||
- | 1) Intro : [[atelier:chantier:bash-les-differents-caracteres-speciaux|Bash : Introduction]] | ||
- | 2) chap I : [[atelier:chantier:la-page-man-bash-les-caracteres-speciaux|Bash : Détail et caractères]] | + | * [[atelier:chantier:bash-les-differents-caracteres-speciaux|Vision d'ensemble]] |
- | + | * [[atelier:chantier:la-page-man-bash-les-caracteres-speciaux|Bash : Détail et caractères]] | |
- | 3) chap II : [[atelier:chantier:la-page-man-bash-ii-les-operateurs-lexicographiques|Bash : les opérateurs lexicographiques]] | + | * [[atelier:chantier: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]] | |
- | 4) chap III : [[atelier:chantier: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]] |
- | + | * [[atelier:chantier:page-man-bash-v-les-tableaux|Bash : les tableaux]] | |
- | 5) chap IV : [[atelier:chantier:page-man-bash-iv-symboles-dans-les-calculs-mathematiques|Bash : les symboles dans les calculs]] | + | * [[atelier:chantier:man-bash-vi-les-caracteres-de-transformation-de-parametres|Bash : les caractères de transformation de parametres]] |
- | + | ||
- | 6) chap V : [[atelier:chantier:page-man-bash-v-les-tableaux|Bash : les tableaux]] | + | |
- | + | ||
- | 7) chap VI : [[atelier:chantier:man-bash-vi-les-caracteres-de-transformation-de-parametres|Bash : les caractères de transformation de parametres]] | + | |
- | + | ||
- | 8) chap VIII : C'est ici ! | + | |
Ligne 71: | Ligne 63: | ||
shopt -s extglob | shopt -s extglob | ||
</code> | </code> | ||
- | Valider puis dans le même terminal : | + | Valider ensuite toujours dans le même terminal : |
<code user> | <code user> | ||
ls ~/Test/!(*jpg|*bmp) | ls ~/Test/!(*jpg|*bmp) | ||
- | #retour: /home/hypathie/Test/nom.txt | + | </code> |
+ | <code> | ||
+ | /home/hypathie/Test/nom.txt | ||
</code> | </code> | ||
Ligne 81: | Ligne 75: | ||
<code user> | <code user> | ||
cd ~/Test/ | cd ~/Test/ | ||
- | ~/Test$ ls | + | </code> |
- | + | PUIS : | |
- | #retour: image.bmp image.jpg nom.txt | + | <code user> |
- | + | ls | |
- | ~/Test$ echo !(*jpg|*bmp) | + | </code> |
- | + | Retour : | |
- | #retour: nom.txt | + | <code> |
+ | image.bmp image.jpg nom.txt | ||
+ | </code> | ||
+ | PUIS : | ||
+ | <code user> | ||
+ | echo !(*jpg|*bmp) | ||
+ | </code> | ||
+ | <code> | ||
+ | nom.txt | ||
</code> | </code> | ||
Ligne 105: | Ligne 107: | ||
echo "mauvaise correspondance" | echo "mauvaise correspondance" | ||
fi | fi | ||
- | # => mauvaise correspondance | + | |
nom=image.jpg | nom=image.jpg | ||
if [[ "$nom" = *.@(jpg|jpeg) ]] # (ligne 12) | if [[ "$nom" = *.@(jpg|jpeg) ]] # (ligne 12) | ||
Ligne 114: | Ligne 116: | ||
echo "mauvaise correspondance" | echo "mauvaise correspondance" | ||
fi | fi | ||
- | # => bonne correspondance | ||
</code> | </code> | ||
+ | <code> | ||
+ | mauvaise correspondance | ||
+ | bonne correspondance | ||
+ | </code> | ||
+ | |||
<note tip> | <note tip> | ||
Quelques remarques sur la ligne 12.\\ | Quelques remarques sur la ligne 12.\\ | ||
Ligne 181: | Ligne 187: | ||
done | done | ||
</code> | </code> | ||
- | |||
- | Retour | ||
<code> | <code> | ||
1234567 ne correspond pas à 9 nombres | 1234567 ne correspond pas à 9 nombres | ||
Ligne 204: | Ligne 208: | ||
echo "pas de match" | echo "pas de match" | ||
fi | fi | ||
- | |||
- | # retour : match | ||
</code> | </code> | ||
+ | <code> | ||
+ | match | ||
+ | </code> | ||
===Compliquons un peu en utilisant plusieurs autres caractères du tableau ci-dessus :=== | ===Compliquons un peu en utilisant plusieurs autres caractères du tableau ci-dessus :=== | ||
Ligne 224: | Ligne 228: | ||
echo "mauvaise regex" | echo "mauvaise regex" | ||
fi | fi | ||
- | |||
- | # retour : Le nom de l'image correspond à l'expression rationnelle. | ||
</code> | </code> | ||
+ | <code> | ||
+ | Le nom de l'image correspond à l'expression rationnelle. | ||
+ | </code> | ||
===explication=== | ===explication=== | ||
Ligne 263: | Ligne 267: | ||
</note> | </note> | ||
- | ====4) un petit script pour s'exercer au ER==== | + | ====4) un script pour s'exercer au ER==== |
- | **Voici un petit script "exp.reg1" qui regroupe les notions étudiées jusqu'à présent.**\\ | + | Voici un script "exp.reg1" qui regroupe les notions étudiées jusqu'à présent.\\ |
Il a pour but de s'exercer aux expressions régulières.\\ | Il a pour but de s'exercer aux expressions régulières.\\ | ||
+ | |||
<code bash> | <code bash> | ||
#!/bin/bash | #!/bin/bash | ||
Ligne 309: | Ligne 314: | ||
# ligne 33 (if) : $? (code de retour) -eq (égal à) zéro (pas d'erreur de sortie, donc bonne correspondance) | # ligne 33 (if) : $? (code de retour) -eq (égal à) zéro (pas d'erreur de sortie, donc bonne correspondance) | ||
</code> | </code> | ||
+ | Lancez-le comme ci-dessous, explications détaillées dans le retour :\\ | ||
+ | //(en considérant que le dossier parent de ce script figure dans $PATH, après modification du fichier ~/.bashrc\\ | ||
+ | voir : [[atelier:chantier:debuter-avec-les-scripts-shell-bash#executer-son-script-depuis-n-importe-ou|3) Exécuter son script depuis n'importe où !]])// | ||
- | **Lancez-le ainsi (explications détaillées dans le retour) :**\\ | ||
- | (en considérant que le dossier parent de ce script figure dans $PATH, après modification du fichier ~/.bashrc\\ | ||
- | voir : [[atelier:chantier:debuter-avec-les-scripts-shell-bash#executer-son-script-depuis-n-importe-ou|3) Exécuter son script depuis n'importe où !]]) | ||
<code user> | <code user> | ||
- | exp.reg1 "^[a-b]" "abc" "ABC" # ER comme premier argument et le ou les chaînes à vérifier en second, troisième, etc. | + | exp.reg1 "^[a-b]" "abc" "ABC" |
</code> | </code> | ||
+ | //(la ER comme premier argument de "exp.reg1", puis le ou les chaînes à vérifier en second, troisième, etc. argument de "exp.reg1")// | ||
+ | |||
+ | Et voilà :-) | ||
+ | **Un grand merci à captnfab pour conseils avisés.** | ||
=====INDEX ===== | =====INDEX ===== | ||
====1) rappel des principaux caractères des expressions rationnelles ==== | ====1) rappel des principaux caractères des expressions rationnelles ==== |