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 | ||
utilisateurs:hypathie:tutos:erb-et-ere-par-le-contexte-des-commandes [13/08/2014 12:13] Hypathie [Caractères spécifiques aux ERb] |
utilisateurs:hypathie:tutos:erb-et-ere-par-le-contexte-des-commandes [13/08/2014 16:32] Hypathie [Caractères spécifiques aux ERb] |
||
---|---|---|---|
Ligne 687: | Ligne 687: | ||
- | =====Caractères spécifiques aux ERb ===== | + | =====Caractères spécifiques aux ERb et ERe ===== |
+ | |||
+ | <note tip> | ||
+ | Je présenterai ici les commandes qui utilisent uniquement les ERb, c'est-à-dire, celles qui n'ont pas besoin d'une option pour utiliser les expressions rationnelles et qui n'utilisent que les expressions rationnelles basiques, et donc forcément les caractères spécifiques aux ERb.\\ | ||
+ | Il s'agit de **''expr''** et **''vi''**.\\ | ||
+ | |||
+ | Elles utilisent bien sûr tous [[utilisateurs:hypathie:tutos:erb-et-ere-par-le-contexte-des-commandes?&#caracteres-communs-aux-erb-et-ere|les caractères communs aux ERb et ERe]], leur utilisation avec ces caractères apparaîtra en à côté de l'utilisation des caractères spécifiques aux ERb qui permettent de décrire des motifs plus complexes. | ||
+ | |||
+ | Pour les commandes "à option" qui utilisent tous les caractères spécifiques aux ERb, mais qui peuvent aussi utiliser ces mêmes caractères((parenthèses, accolades, +, ? et |)) sans antislash avec les ERe, je présenterai rapidement leur utilisation des ERb dans le chapitre sur les caractères spécifiques aux ERe. | ||
+ | </note> | ||
+ | |||
+ | ====Caractères spécifiques aux ERb ==== | ||
Toutes les commandes utilisant les expressions rationnelles basiques utilisent les caractères énumérés ci-dessous.\\ | Toutes les commandes utilisant les expressions rationnelles basiques utilisent les caractères énumérés ci-dessous.\\ | ||
Ligne 700: | Ligne 712: | ||
Les commandes **''grep''** (ou **''grep -G''**) ; **''find -regextype "posix-basic" ''** ; | Les commandes **''grep''** (ou **''grep -G''**) ; **''find -regextype "posix-basic" ''** ; | ||
- | **''locate --regexp''** ; **''sed''**; **''vi''** utilisent en plus ces caractères-ci : | + | **''locate --regexp''** ; **''sed''**; **''vi''** utilisent en plus ces caractères ci-dessous : |
^ ^ ^ | ^ ^ ^ | ||
Ligne 710: | Ligne 722: | ||
Mais il permet de rendre littéraux les autres caractères des ERb, par exemple ''\.'' permet de sélectionner un point. | Mais il permet de rendre littéraux les autres caractères des ERb, par exemple ''\.'' permet de sélectionner un point. | ||
- | <note tip> | ||
- | Je présenterai principalement les commandes qui n'utilisent que les ERb, c'est-à-dire, celles qui n'ont pas besoin d'une option pour utiliser les expressions rationnelles et qui n'ont pas encore été abordées, **''expr''** et **''vi''**.\\ | ||
- | Elles utilisent bien sûr tous [[utilisateurs:hypathie:tutos:erb-et-ere-par-le-contexte-des-commandes?&#caracteres-communs-aux-erb-et-ere|les caractères communs aux ERb et ERe]], leur utilisation avec ces caractères apparaîtra en à côté de l'utilisation des caractères spécifiques aux ERb. | + | ====Caractères spécifiques aux ERe ==== |
- | Je ferai ensuite un bref rappel des commandes "à option" qui utilisent tous les caractères spécifiques aux ERb, mais qui peuvent aussi utiliser ces mêmes caractères((parenthèses, accolades, +, ? et |)) sans antislash avec les ERe. | + | Les caractères spécifiques aux ERe sont utilisables avec les commandes : |
- | </note> | + | |
+ | **''grep -E''** ; (ou **''egrep''**) ; **''find -regextype "posix-extended" ''** ; | ||
+ | **''locate --regex''** ; **''sed -r''** et **''awk''**((alias gawk)).\\ | ||
+ | |||
+ | Bien évidemment tous [[utilisateurs:hypathie:tutos:erb-et-ere-par-le-contexte-des-commandes?&#caracteres-communs-aux-erb-et-ere|les caractères communs aux ERb et ERe]] sont utilisables avec ces commandes et ces options. | ||
+ | |||
+ | ^expressions ^ Modèles reconnus ^ | ||
+ | |**''?''** | zéro ou une fois le caractère ou le regroupement précédent | | ||
+ | |**''+''** |une à n fois le caractère ou regroupement précédent | | ||
+ | |**''<nowiki>{m}</nowiki>''** |m fois le caractère précédent | | ||
+ | |**''<nowiki>{m,}</nowiki>''** | m fois le caractère précédent | | ||
+ | |**''<nowiki>{m,n}</nowiki>''** | entre m et n fois le caractère précédent | | ||
+ | |**''<nowiki>( er1)</nowiki>''** | regroupement | | ||
+ | |**''<nowiki>er1|er2|er3</nowiki>''** | alternative | | ||
+ | |**''<nowiki>(er)+</nowiki>''**|Une ou plus de une chaîne(s) consécutive(s) validée(s) "er".| | ||
+ | |**''<nowiki>(er)*</nowiki>''**|zéro ou plus de zéro chaîne(s) consécutive(s) validée(s) par "er" | | ||
+ | |**''<nowiki>(er)?</nowiki>''**|une chaîne bulle ou toute chaîne validée par "er".| | ||
+ | |**''<nowiki>[c1c2...]</nowiki>''**|Tout caractère expressément listé entre les crochets.| | ||
+ | |**''<nowiki>[^c1c2...]</nowiki>''**|Tout caractère excepté ceux qui sont expressément listés entre les crochets.| | ||
+ | |**''<nowiki>[c1-c2]</nowiki>''**|Tout caractère appartenant à l’intervalle c1 c2, bornes comprises.| | ||
+ | |**''<nowiki>er1|er2</nowiki>''**|Toute chaîne de caractères validée soit par er1 soit par er2.| | ||
+ | |**''<nowiki>(er)(er)</nowiki>''**|Toute chaîne validée par l’expression er, chaîne vide exclue.| | ||
+ | |**''<nowiki>(er1)(er2)</nowiki>''**|Toute chaîne de caractères de type AB, dans laquelle l’expression régulière er1 valide A et l’expression régulière er2 valide B.\\ Avec awk uniquement| | ||
+ | |||
+ | =====Les commandes expr et vi et les caractères spécifiques aux ERb ===== | ||
====La commande expr n'utilise que ERb==== | ====La commande expr n'utilise que ERb==== | ||
Ligne 794: | Ligne 828: | ||
> Le chiffre "1" est le code de retour. | > Le chiffre "1" est le code de retour. | ||
- | |||
* sous chaîne avec caractère fin de mot : | * sous chaîne avec caractère fin de mot : | ||
Ligne 828: | Ligne 861: | ||
====L'éditeur de texte vi n'utilise que les ERb ==== | ====L'éditeur de texte vi n'utilise que les ERb ==== | ||
===Préparation === | ===Préparation === | ||
- | <code user>vi liste4-vim</code> | + | <code user>cat liste4-vim</code> |
- | ou | + | <code> |
- | <code user>vim liste4-vim</code> | + | Kc5 T5 c E2* abcd 7 9Abcd |
- | + | 7 1AAA.AAA.bcdef aBcd6a 123* | |
- | {{http://pix.toile-libre.org/upload/original/1407922486.png?400}} | + | abc2356.99 |
+ | 73000|Savoie | ||
+ | index-tel|04|Rhône-Alpe | ||
+ | -15 +36 5687 {15} exemple{36} | ||
+ | il y a un truc et un truc et encore un truc et une chose | ||
+ | chose et truc ne font pas bon ménage | ||
+ | 123.3456.abc | ||
+ | trucchosetruc | ||
+ | tructructruc | ||
+ | chosechosechose | ||
+ | </code> | ||
<note tip> | <note tip> | ||
Ligne 845: | Ligne 888: | ||
* Pour tester ce qui suit si vous ne connaissez pas vi ou vim :\\ | * Pour tester ce qui suit si vous ne connaissez pas vi ou vim :\\ | ||
- | *Après installation de vim, créer un fichier, par exemple "liste4-vim" : '' vim liste4-vim '' | + | *Après [[doc:editeurs:vim:vim#installation|installation de vim]], créer un fichier, par exemple "liste4-vim" : '' vim liste4-vim '' |
- | *Copier le contenu de "liste4-vim" ci-dessus ; | + | * Copier le contenu de "liste4-vim" ci-dessus ; |
- | *coller dans le fichier "liste4-vim" édité avec vim en faisant : | + | * Pour coller dans le fichier "liste4-vim" édité avec vim : |
* touche <majuscule de droite> + touche <inser> (cela fait que l'on est en mode insertion) | * touche <majuscule de droite> + touche <inser> (cela fait que l'on est en mode insertion) | ||
* sortir du mode insertion : touche "Échap" | * sortir du mode insertion : touche "Échap" | ||
- | * enregistrez : '' :wq '' et touche <entrée> | + | * enregistrer et sortir : '' :wq '' et touche <entrée> |
- | * vi (vim) utilise tous [[utilisateurs:hypathie:tutos:erb-et-ere-par-le-contexte-des-commandes?&#caracteres-communs-aux-erb-et-ere|les caractères communs aux ERb et ERe]], tous [[utilisateurs:hypathie:tutos:erb-et-ere-par-le-contexte-des-commandes?&#caracteres-specifiques-aux-erb|les caractères spécifiques aux ERb]], y compris ceux ci-dessous (comme "les commandes à option"): | + | * vi (vim) utilise tous [[utilisateurs:hypathie:tutos:erb-et-ere-par-le-contexte-des-commandes?&#caracteres-communs-aux-erb-et-ere|les caractères communs aux ERb et ERe]], tous [[utilisateurs:hypathie:tutos:erb-et-ere-par-le-contexte-des-commandes?&#caracteres-specifiques-aux-erb|les caractères spécifiques aux ERb]], y compris ceux ci-dessous (comme "les commandes à option" permettant de choisir le type //ER//): |
|**''<nowiki>\?</nowiki>''** | zéro ou une fois l'élément précédent | | |**''<nowiki>\?</nowiki>''** | zéro ou une fois l'élément précédent | | ||
Ligne 865: | Ligne 908: | ||
</note> | </note> | ||
+ | * Éditer le fichier "liste4-vim" : | ||
+ | * Pour éditer le fichier avec vi ou vim : | ||
+ | |||
+ | <code user>vi liste4-vim</code> | ||
+ | ou | ||
+ | <code user>vim liste4-vim</code> | ||
+ | |||
+ | {{http://pix.toile-libre.org/upload/original/1407922486.png?400}} | ||
===Syntaxe d'utilisation des ER=== | ===Syntaxe d'utilisation des ER=== | ||
Ligne 936: | Ligne 987: | ||
</code> | </code> | ||
- | >"1,$" est l'adressage qui signifie de la première ligne à la fin | + | >"1,$" est l'adressage qui signifie de la première ligne à la fin. |
* utilisation de \| : | * utilisation de \| : | ||
<code>/c\|t</code> | <code>/c\|t</code> | ||
- | >surligne tous les "c" et tous les "t" du fichier. | + | ->Une image vaut mieux qu'une description :\\ |
+ | {{http://pix.toile-libre.org/upload/original/1407937898.png?400}} | ||
* Utilisation de \? : | * Utilisation de \? : | ||
<code>/\.[0-9]\?</code> | <code>/\.[0-9]\?</code> | ||
- | ->Une image vaut mieux qu'une description :\\ | + | -> Là aussi :\\ |
{{http://pix.toile-libre.org/upload/original/1407857157.png?400}} | {{http://pix.toile-libre.org/upload/original/1407857157.png?400}} | ||
Ligne 1416: | Ligne 1468: | ||
* Recherche : | * Recherche : | ||
- | <code>/[[:alnum:]]\{7\}\.[[:digit:]]\{2\} </code> | + | <code>/[[:alnum:]]\{7\}{[[:digit:]]\{2\}} </code> |
- | -> sélectionne entièrement la ligne **''abc2356.99''** | + | -> sélectionne entièrement la chaîne **''exemple{36}''** |
- | * Substitution : | + | * Substitution <nowiki>[[:graph:]]</nowiki>: |
- | <code>:3,4s/[[:graph:]]/x/g</code> | + | <code>:6,10s/[[:graph:]]/x/g</code> |
- | -> les ligne 3 et 4 ne présentent plus que des "x", tous les caractères susceptibles d'être concernés par la //ER// sont surlignés, c'est-à-dire tous le texte sauf les espaces. | + | > Le caractère "ô" n'est pas concerné du fait de la touche morte. |
- | -> Information sur les substitutions : ''22 substitutions, sur 2 lignes'' | + | {{http://pix.toile-libre.org/upload/original/1407925315.png?400}} |
+ | |||
+ | * Substitution <nowiki>[[:print:]]</nowiki> : | ||
+ | <code>:6,10s/[[:print:]]/x/g</code> | ||
+ | |||
+ | {{http://pix.toile-libre.org/upload/original/1407925697.png?400}} | ||
====awk utilise les ERe et les classes sans option==== | ====awk utilise les ERe et les classes sans option==== | ||
Ligne 1453: | Ligne 1510: | ||
- | ======Les expressions rationnelles étendues====== | + | ======Raccourcis et commandes====== |
- | ====Caractères des ERe ==== | + | |
- | ^expressions ^ Modèles reconnus ^ | ||
- | |**''?''** | zéro ou une fois le caractère ou le regroupement précédent | | ||
- | |**''+''** |une à n fois le caractère ou regroupement précédent | | ||
- | |**''<nowiki>{m}</nowiki>''** |m fois le caractère précédent | | ||
- | |**''<nowiki>{m,}</nowiki>''** | m fois le caractère précédent | | ||
- | |**''<nowiki>{m,n}</nowiki>''** | entre m et n fois le caractère précédent | | ||
- | |**''<nowiki>( er1)</nowiki>''** | regroupement | | ||
- | |**''<nowiki>er1|er2|er3</nowiki>''** | alternative | | ||
- | |**''<nowiki>(er)+</nowiki>''**|Une ou plus de une chaîne(s) consécutive(s) validée(s) "er".| | ||
- | |**''<nowiki>(er)*</nowiki>''**|zéro ou plus de zéro chaîne(s) consécutive(s) validée(s) par "er" | | ||
- | |**''<nowiki>(er)?</nowiki>''**|une chaîne bulle ou toute chaîne validée par "er".| | ||
- | |**''<nowiki>[c1c2...]</nowiki>''**|Tout caractère expressément listé entre les crochets.| | ||
- | |**''<nowiki>[^c1c2...]</nowiki>''**|Tout caractère excepté ceux qui sont expressément listés entre les crochets.| | ||
- | |**''<nowiki>[c1-c2]</nowiki>''**|Tout caractère appartenant à l’intervalle c1 c2, bornes comprises.| | ||
- | |**''<nowiki>er1|er2</nowiki>''**|Toute chaîne de caractères validée soit par er1 soit par er2.| | ||
- | |**''<nowiki>(er)(er)</nowiki>''**|Toute chaîne validée par l’expression er, chaîne vide exclue.| | ||
- | |**''<nowiki>(er1)(er2)</nowiki>''**|Toute chaîne de caractères de type AB, dans laquelle l’expression régulière er1 valide A et l’expression régulière er2 valide B.\\ Avec awk uniquement| | ||
- | Excepté **''<nowiki>(er1)(er2)</nowiki>''** : | + | Les raccourcis ne sont pas posix |
- | === avec awk (sans option)=== | + | === __sed__ :=== |
- | + | ||
- | ===avec grep -E et egrep=== | + | |
- | <code user>grep -E "1([A-Z]){2}.*" liste4-spec</code> | + | |
- | <code> | + | |
- | 7 1AAA.AAA.bcdef aBcd6a 123* | + | |
- | </code> | + | |
- | + | ||
- | ===avec sed -r=== | + | |
- | + | ||
- | ===avec locate === | + | |
- | <code man locate> | + | |
- | --regex | + | |
- | Interpret all PATTERNs as extended regexps. | + | |
- | </code> | + | |
- | + | ||
- | * Syntaxe : | + | |
- | <code> | + | |
- | locate --regex 'ERe' | + | |
- | </code> | + | |
- | + | ||
- | ===avec find === | + | |
- | <code man find> | + | |
- | -regextype type | + | |
- | Définir la syntaxe des expressions rationnelles des tests -regex | + | |
- | et -iregex qui seront indiqués plus loin sur la ligne de com‐ | + | |
- | mande. Les types actuellement implémentés sont emacs (type par | + | |
- | défaut), posix-awk, posix-basic, posix-egrep et posix-extended. | + | |
- | </code> | + | |
- | + | ||
- | * Syntaxe : | + | |
- | <code> | + | |
- | find -regextype "posix-extended" -regex "ERe" | + | |
- | </code> | + | |
- | + | ||
- | ====Les raccourcis ne sont pas posix==== | + | |
- | + | ||
- | * __sed__ : | + | |
^Séquences ^Séquences ^ | ^Séquences ^Séquences ^ | ||
Ligne 1524: | Ligne 1526: | ||
|**''<nowiki>\b</nowiki>''** | Correspond à une chaîne vide (blanc) à l'extrémité d'un mot | | |**''<nowiki>\b</nowiki>''** | Correspond à une chaîne vide (blanc) à l'extrémité d'un mot | | ||
- | + | === __awk__ :=== | |
- | + | ||
- | + | ||
- | * __awk__ : | + | |
^Séquences ^Séquences ^ | ^Séquences ^Séquences ^ | ||
Ligne 1536: | Ligne 1535: | ||
|**''<nowiki>\c </nowiki>''** | tout caractère pris sous sa forme littérale\\ excepté **''<nowiki>\</nowiki>''** | | |**''<nowiki>\c </nowiki>''** | tout caractère pris sous sa forme littérale\\ excepté **''<nowiki>\</nowiki>''** | | ||
- | __Excepté **''<nowiki>(er1)(er2)</nowiki>''**__ : | ||
- | |||
- | * Tous sont utilisables avec grep -E et egrep | ||
- | * Tous sont utilisable avec awk | ||
- | * Certains posent problème avec sed -r | ||
- | |||
- | __Options nécessaires avec find et locate__ : | ||
- | |||
- | * find -regextype "posix-extended"\\ Les types actuellement implémentés sont emacs (type par défaut), posix-awk, posix-basic, posix-egrep et posix-extended. | ||
- | |||
- | *locate --regex : Interpréter tous les "PATTERNs" (modèles) comme des expressions rationnelles étendues. | ||