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 [15/08/2014 11:31] Hypathie [Les expressions rationnelles basiques et les commandes GNU/Linux] |
utilisateurs:hypathie:tutos:erb-et-ere-par-le-contexte-des-commandes [15/08/2014 12:29] Hypathie [Les classes] |
||
---|---|---|---|
Ligne 1322: | Ligne 1322: | ||
===Exemples === | ===Exemples === | ||
- | * Substituer "Hello" par "OK" : | + | * __Substituer "Hello" par "OK" :__ |
<code user>echo "coucou Hello Yep" | sed -r 's/[A-Z]{1}[a-z]{4}/OK/g'</code> | <code user>echo "coucou Hello Yep" | sed -r 's/[A-Z]{1}[a-z]{4}/OK/g'</code> | ||
Ligne 1329: | Ligne 1329: | ||
</code> | </code> | ||
- | * Substituer "a" et "aa" par "OK" : | + | * __Substituer "a" et "aa" par "OK" :__ |
<code user>echo "a aa aaa aaaa aaaaaa aaaaaaaa" | sed -re 's/(a{1} )/OK/'\ | <code user>echo "a aa aaa aaaa aaaaaa aaaaaaaa" | sed -re 's/(a{1} )/OK/'\ | ||
Ligne 1352: | Ligne 1352: | ||
__**Préparation**__\\ | __**Préparation**__\\ | ||
- | Dans le répertoire de l'utilisateur soit le répertoire "ERetCMD/" contenant : | + | Rappel : le répertoire "ERetCMD/" contient : |
<code> | <code> | ||
- | Dossier img-perso-2.jpg liste3-erb-ere sort1.txt | + | Dossier img-perso-2.jpg liste2-nom server-0.xkb |
- | essai.grep2~ liste liste4-spec sort2.txt | + | image linux - 01.jpg liste liste3-erb-ere smolski-exo-sed.txt |
- | image linux - 01.jpg liste1 liste4-vim sort3.txt | + | image linux - 02.jpg liste1 liste4-spec sort1.txt |
- | image linux - 02.jpg liste1-nom liste-class vim2.png | + | image linux - 03.jpg liste1-nom liste4-vim sort2.txt |
- | image linux - 03.jpg liste2 server-0.xkb vim.png | + | img-perso-1.jpg liste2 liste-class sort3.txt |
- | img-perso-1.jpg liste2-nom smolski-exo-sed.txt xxx-sort.txt | + | |
</code> | </code> | ||
===Exemples === | ===Exemples === | ||
- | * accolades (depuis le répertoire parent "ERetCMD/" des fichiers recherchés : | + | * __Les accolades__ (depuis le répertoire parent "ERetCMD/" des fichiers recherchés : |
<code user>find -regextype "posix-basic" -regex ".*/[a-z]\{,3\}-.*\.jpg$"</code> | <code user>find -regextype "posix-basic" -regex ".*/[a-z]\{,3\}-.*\.jpg$"</code> | ||
<code> | <code> | ||
Ligne 1379: | Ligne 1378: | ||
</code> | </code> | ||
- | * caractère ? : | + | * __Le caractère ? :__ |
<code user>find -regextype "posix-basic" -regex ".*/liste.\?"</code> | <code user>find -regextype "posix-basic" -regex ".*/liste.\?"</code> | ||
<code> | <code> | ||
Ligne 1387: | Ligne 1387: | ||
</code> | </code> | ||
- | * le caractère + (depuis le répertoire parent "ERetCMD/" des fichiers) : | + | * __Le caractère +__ (depuis le répertoire parent "ERetCMD/" des fichiers) : |
<code user>find -regextype "posix-extended" -regex ".*liste.+"</code> | <code user>find -regextype "posix-extended" -regex ".*liste.+"</code> | ||
<code> | <code> | ||
Ligne 1406: | Ligne 1406: | ||
De même que précédemment, on peut choisir l'option **''--regexp''** pour utiliser les caractères spécifiques aux ERb qui nécessitent **''\''**. | De même que précédemment, on peut choisir l'option **''--regexp''** pour utiliser les caractères spécifiques aux ERb qui nécessitent **''\''**. | ||
- | Soit encore le répertoire "ERetCMD/" contenant les mêmes fichiers (voir find).\\ | + | Soit encore le répertoire "ERetCMD/" contenant les mêmes fichiers.\\ |
Mise à jour de la base de donnée, si besoin : | Mise à jour de la base de donnée, si besoin : | ||
Ligne 1414: | Ligne 1414: | ||
===Exemples === | ===Exemples === | ||
- | * parenthèses et accolades (depuis n'importe où dans l'arborescence du système de fichiers) : | + | * __Parenthèses et accolades__ (depuis n'importe où dans l'arborescence du système de fichiers) : |
<code user>locate --regexp '\([a-z]\{1,\} \)\{2\}.*\.jpg$'</code> | <code user>locate --regexp '\([a-z]\{1,\} \)\{2\}.*\.jpg$'</code> | ||
Ligne 1423: | Ligne 1423: | ||
/home/hypathie/ERetCMD/image linux - 03.jpg | /home/hypathie/ERetCMD/image linux - 03.jpg | ||
</code> | </code> | ||
+ | |||
+ | > D'autres fichiers que ceux du répertoire "~/ERetCMD/" et créés pour les exemples peuvent apparaître. | ||
ou | ou | ||
Ligne 1434: | Ligne 1436: | ||
</code> | </code> | ||
- | * caractère ? : | + | * __Caractère ? :__ |
<code user>locate --regex '/liste.?'</code> | <code user>locate --regex '/liste.?'</code> | ||
<code> | <code> | ||
Ligne 1453: | Ligne 1456: | ||
>Le fichier "liste" (sans extension) apparaît. | >Le fichier "liste" (sans extension) apparaît. | ||
- | * caractère + : | + | * __Caractère + :__ |
<code user>locate --regex '/liste.+'</code> | <code user>locate --regex '/liste.+'</code> | ||
Ligne 1471: | Ligne 1474: | ||
- | >Le fichier "liste" (sans extension) n'apparaît pas. | + | >Le fichier "liste" (sans extension) n'apparaît plus. |
=====Les classes ===== | =====Les classes ===== | ||
Ligne 1495: | Ligne 1498: | ||
====grep, grep -E et les classes==== | ====grep, grep -E et les classes==== | ||
La commande grep utilise les classes soit comme ERb et soit comme ERe, c'est-à-dire sans l'option -E ou avec l'option -E | La commande grep utilise les classes soit comme ERb et soit comme ERe, c'est-à-dire sans l'option -E ou avec l'option -E | ||
- | ===Préparation === | + | |
+ | Préparation === | ||
* soit le fichier " | * soit le fichier " | ||
- | <code user>cat liste-class</code> | + | <code user>cd ~/ERetCMD/ && cat >> liste-class <<EOF |
- | <code> | + | |
gdd:a:aa:aaa:aaaa:aaaaaa:aaaaaaaa | gdd:a:aa:aaa:aaaa:aaaaaa:aaaaaaaa | ||
T5c Kc5 T5 c E2* abcd 7 9Abcd | T5c Kc5 T5 c E2* abcd 7 9Abcd | ||
Ligne 1509: | Ligne 1512: | ||
-15 +36 5687 {15} exemple{36} | -15 +36 5687 {15} exemple{36} | ||
123.3456.abc | 123.3456.abc | ||
+ | EOF | ||
</code> | </code> | ||
Ligne 1523: | Ligne 1527: | ||
</code> | </code> | ||
- | >sélection de "3456" ; "5687" ; de "2356" ; et des lignes avec plus de 4 chiffres consécutif. | + | >Sélection de "3456" ; "5687" ; de "2356" ; et des lignes avec plus de 4 chiffres consécutif. |
<code user>grep "[[:digit:]]\{6\}" liste-class</code> | <code user>grep "[[:digit:]]\{6\}" liste-class</code> | ||
Ligne 1567: | Ligne 1571: | ||
====locate et les classes, ERb ou ERe==== | ====locate et les classes, ERb ou ERe==== | ||
- | * Visualisation du répertoire ~/ERetCMD/ : | + | * Rappel du contenu de "~/ERetCMD/" : |
<code user>ls</code> | <code user>ls</code> | ||
<code> | <code> | ||
- | Dossier img-perso-1.jpg liste3-erb-ere smolski-exo-sed.txt | + | Dossier img-perso-2.jpg liste2-nom server-0.xkb |
- | essai.grep2~ img-perso-2.jpg liste4-spec sort1.txt | + | image linux - 01.jpg liste liste3-erb-ere smolski-exo-sed.txt |
- | image linux - 01.jpg liste1-nom liste4-spec~ sort2.txt | + | image linux - 02.jpg liste1 liste4-spec sort1.txt |
- | image linux - 02.jpg liste1-nom~ liste4-vim sort3.txt | + | image linux - 03.jpg liste1-nom liste4-vim sort2.txt |
- | image linux - 03.jpg liste2-nom server-0.xkb xxx-sort.txt | + | img-perso-1.jpg liste2 liste-class sort3.txt |
</code> | </code> | ||
- | ===sous-chaîne avec classes dans une ERb=== | + | ===Sous-chaîne avec classes dans une ERb=== |
>Option --regexp et on met un antislash de toutes les parenthèses et les accolades. | >Option --regexp et on met un antislash de toutes les parenthèses et les accolades. | ||
Ligne 1588: | Ligne 1592: | ||
</code> | </code> | ||
- | ===sous-chaîne avec classes dans une ERe=== | + | >D'autres fichiers créés avant l'exercice peuvent apparaître. |
+ | |||
+ | ===Sous-chaîne avec classes dans une ERe=== | ||
>Idem mais avec option --regex et on enlève les ''\'' inutiles avec les ERe | >Idem mais avec option --regex et on enlève les ''\'' inutiles avec les ERe | ||
Ligne 1667: | Ligne 1673: | ||
</code> | </code> | ||
- | ====la commande expr utilise les classes en tant ERb==== | + | ====La commande expr utilise les classes en tant ERb==== |
* Exemple 1 : | * Exemple 1 : | ||
Ligne 1688: | Ligne 1694: | ||
====vi (vim) utilise les classes en tant que ERb==== | ====vi (vim) utilise les classes en tant que ERb==== | ||
===Préparation === | ===Préparation === | ||
- | <code user>vim liste4-vim</code> | + | <code user>vim liste4-spec</code> |
- | <code> | + | |
- | Kc5 T5 c E2* abcd 7 9Abcd | + | {{http://pix.toile-libre.org/upload/original/1408097498.png?400}} |
- | 7 1AAA.AAA.bcdef aBcd6a 123* | + | |
- | 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> | + | |
===Exemples === | ===Exemples === | ||
Ligne 1709: | Ligne 1704: | ||
<code>/[[:alnum:]]\{7\}{[[:digit:]]\{2\}} </code> | <code>/[[:alnum:]]\{7\}{[[:digit:]]\{2\}} </code> | ||
- | -> sélectionne entièrement la chaîne **''exemple{36}''** | + | {{http://pix.toile-libre.org/upload/original/1408097922.png?400}} |
* Substitution <nowiki>[[:graph:]]</nowiki>: | * Substitution <nowiki>[[:graph:]]</nowiki>: | ||
<code>:6,10s/[[:graph:]]/x/g</code> | <code>:6,10s/[[:graph:]]/x/g</code> | ||
- | > Le caractère "ô" n'est pas concerné du fait de la touche morte. | + | {{http://pix.toile-libre.org/upload/original/1408098079.png?400}} |
+ | |||
+ | > Les caractères accentués ne sont pas concernés car ils comportent un caractère de contrôle pour l'accentuation avec la touche morte. | ||
+ | |||
+ | > Faire **'':nohlsearch''** et **''u''** pour la suite. | ||
- | {{http://pix.toile-libre.org/upload/original/1407925315.png?400}} | ||
* Substitution <nowiki>[[:print:]]</nowiki> : | * Substitution <nowiki>[[:print:]]</nowiki> : | ||
<code>:6,10s/[[:print:]]/x/g</code> | <code>:6,10s/[[:print:]]/x/g</code> | ||
- | {{http://pix.toile-libre.org/upload/original/1407925697.png?400}} | + | {{http://pix.toile-libre.org/upload/original/1408098434.png?400}} |
+ | |||
+ | > Cette fois les caractères accentués sont concernés s'ils font partie de l'adressage. | ||
+ | > Faire **'':q!''** pour quitter sans enregistrer. | ||
=====awk les ERe et les classes===== | =====awk les ERe et les classes===== |