logo Debian Debian Debian-France Debian-Facile Debian-fr.org Forum-Debian.fr Debian ? Communautés logo inclusivité

Debian-facile

Bienvenue sur Debian-Facile, site d'aide pour les nouveaux utilisateurs de Debian.

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 → ODT PDF Export

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

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:37]
Hypathie [Correspondance de motifs avec les globs étendus]
doc:programmation:shells:bash-vii-globs-etendus-regex [06/07/2014 11:58]
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 126: Ligne 132:
  
 =====Correspondance de motifs avec les expressions rationnelles===== =====Correspondance de motifs avec les expressions rationnelles=====
-====1) L'​opérateur de correspondance =~ d'une expression rationnelle dans une expression de tests [[  ]] ====+==== L'​opérateur de correspondance =~ d'une expression rationnelle dans une expression de tests [[  ]] ====
  
-**Certaines expressions régulières peuvent être utilisées avec bash, mais elles ne peuvent pas être utilisée comme modèle de comparaison avec des noms de fichier pour effectuer des recherches en ligne de commandes. Elles matchent des variables et s'​utilisent dans le cadres des scripts**.\\ +Certaines expressions régulières peuvent être utilisées avec bash, mais elles ne peuvent pas être utilisée comme modèle de comparaison avec des noms de fichier pour effectuer des recherches en ligne de commandes. Elles matchent des variables et s'​utilisent dans le cadres des scripts.\\ ​
  
 Les expressions régulières reconnues par Bash sont nommées ERE ("​expression régulière étendues).\\ ​ Les expressions régulières reconnues par Bash sont nommées ERE ("​expression régulière étendues).\\ ​
-Depuis **Bash 3.0**, on peut pour se faire utiliser l'​opérateur =~ avec un modèle regex, "​mot-clé"​. <​code>​[[ mot-clé]] ​ # modèle regex</​code> ​**Cet opérateur =~ permet alors de vérifier la correspondre entre une chaîne (valeur d'une variable à gauche) et le modèle regex à droite.**\\  +Depuis **Bash 3.0**, on peut pour se faire utiliser l'​opérateur =~ avec un modèle regex, "​mot-clé"​. <​code>​[[ mot-clé]] ​ # modèle regex</​code>​ Cet opérateur =~ permet alors de vérifier la correspondre 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.\\
 Voici quelques liens qui présentent la syntaxe et les caractères utilisables avec Bash sans les commandes grep, sed, awk.\\ ​ Voici quelques liens qui présentent la syntaxe et les caractères utilisables avec Bash sans les commandes grep, sed, awk.\\ ​
-[[http://​mywiki.wooledge.org/​RegularExpression]]\\  +  * [[http://​mywiki.wooledge.org/​RegularExpression]]\\  
-[[https://​en.wikipedia.org/​wiki/​Regular_expression#​Standards]]\\ ​+  ​* ​[[https://​en.wikipedia.org/​wiki/​Regular_expression#​Standards]]\\ ​
  
-**Lorsque la chaîne correspond au motif, le code retour du test renvoie 0 pour vrai, sinon, il renvoie 1 pour faux.\\  +Lorsque la chaîne correspond au motif, le code retour du test renvoie 0 pour vrai, sinon, il renvoie 1 pour faux.\\  
-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 sont disponibles dans la variable $BASH_REMATCH. 
 + 
 +==== Liste des caractères utilisés dans les expressions régulières étendues====
  
-====2) Liste des caractères utilisés dans les expressions régulières étendues==== 
 **Voici les caractères utilisables :** **Voici les caractères utilisables :**
 ^ "​signes"​ regex ERE basique ​ ^ signification (comparez avec le tableau de l'​index) ​            ^ ^ "​signes"​ regex ERE basique ​ ^ signification (comparez avec le tableau de l'​index) ​            ^
Ligne 166: Ligne 173:
  
    
-====3) Apprenons à construire une expression régulière "​bashiste"​==== ​+==== Apprenons à construire une expression régulière "​bashiste"​==== ​
  
 <code bash> <code bash>
Ligne 180: Ligne 187:
 done done
 </​code>​ </​code>​
- 
-Retour 
 <​code>​ <​code>​
 1234567 ne correspond pas à 9 nombres 1234567 ne correspond pas à 9 nombres
Ligne 203: 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 223: 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 241: Ligne 246:
 <​code>​([[:​digit:​]]*) - ([[:​alpha:​]]?​)</​code>​ <​code>​([[:​digit:​]]*) - ([[:​alpha:​]]?​)</​code>​
  
-  * La sous-expression (.*) signifie n'​importe quel nombre (*) de tout caractères (.), puis littéralement jpg, puis $ qui signifie fin de l'​expression+  * La sous-expression (.*) signifie n'​importe quel nombre (*) de tout caractères (.), puis littéralement jpg, puis $ qui signifie fin de l'​expression ($).
-(.*)jpg$ +
- +
  
 Et voilà comment avec le shell bash, on peut dresser une expression rationnelle fonctionnant dans les tests !   :-P Et voilà comment avec le shell bash, on peut dresser une expression rationnelle fonctionnant dans les tests !   :-P
  
 <​note>​ <​note>​
-**DONC**\\ +DONC\\ ​
  
-**LES EXPRESSIONS RÉGULIÈRES UTILISÉES AVEC LE SHELL BASH NÉCESSITENT L'​OPÉRATEUR =~**\\ +  ​*LES EXPRESSIONS RÉGULIÈRES UTILISÉES AVEC LE SHELL BASH NÉCESSITENT L'​OPÉRATEUR =~ 
- +  * ON Y RETROUVE CEUX DES CARACTÈRES GÉNERIQUES (globs) BASIQUES [ * [ ] ? ] (avec sens voisin mais étendus par une syntaxe particulière).  
-**ON Y RETROUVE CEUX DES CARACTÈRES GÉNERIQUES (globs) BASIQUES [ * [ ] ? ] (avec sens voisin mais étendus par une syntaxe particulière).**\\  +  * ON Y RETROUVENT CEUX DES CARACTÈTRES GÉNÉRIQUES ÉTENDUS [ | @ ! +  ^]  (là aussi avec une nouvelle syntaxe).  
- +  * LES NOUVEAUX CARACTÈRES SONT [   **,** dans { }  **( )** **\n** ​ ainsi que l'​enchâssement de crochets simples.  
-**ON Y RETROUVENT CEUX DES CARACTÈTRES GÉNÉRIQUES ÉTENDUS [ | @ ! +  ^]  (là aussi avec une nouvelle syntaxe).**\\  +  * ELLES NE S'​UTILISENT PAS AVEC LA SYNTAXE DE CORRESPONDANCE OU DE SUBSTITUTION DE TYPE : 
- +
-**LES NOUVEAUX CARACTÈRES SONT [   **,** dans { }  **( )** **\n** ​ ainsi que l'​enchâssement de crochets simples.**\\  +
-**ELLES NE S'​UTILISENT PAS AVEC LA SYNTAXE DE CORRESPONDANCE OU DE SUBSTITUTION DE TYPE :** +
 <​code> ​ <​code> ​
 $var/​.../​... $var/​.../​...
Ligne 264: Ligne 263:
 $var//​.../​... $var//​.../​...
 </​code>​ </​code>​
-**CE SONT LES ER D'​AUTRES PROGRAMMES QUI RECOURENT À UNE SYNTAXE RESSEMBLANTE (voir index correspondance et substitution).**\\  +  ​* CE SONT LES ER D'​AUTRES PROGRAMMES QUI RECOURENT À UNE SYNTAXE RESSEMBLANTE (voir index correspondance et substitution).  
- +  * BEAUCOUP DE CES MÉTA-CARATÈRES SONT IDENTIQUES À CEUX DES ER D'​AUTRES PROGRAMMES (comparez avec l'​index).
-**BEAUCOUP DE CES MÉTA-CARATÈRES SONT IDENTIQUES À CEUX DES ER D'​AUTRES PROGRAMMES (comparez avec l'​index)**.+
 </​note>​ </​note>​
  
doc/programmation/shells/bash-vii-globs-etendus-regex.txt · Dernière modification: 22/10/2015 18:31 par milou

Pied de page des forums

Propulsé par FluxBB