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 [12/08/2014 16:27] Hypathie [Caractères spécifiques aux ERb] |
utilisateurs:hypathie:tutos:erb-et-ere-par-le-contexte-des-commandes [13/08/2014 07:01] Hypathie [Les expressions rationnelles basiques selon les commandes] |
||
---|---|---|---|
Ligne 51: | Ligne 51: | ||
* **sed** : **ERb**\\ par exemple, sélectionne, modifie les chaînes d'un fichier ou de l'affichage en se basant sur les colonnes. La //ER// permet de sélectionner quelle(s) colonne(s) est (sont) concernée(s). | * **sed** : **ERb**\\ par exemple, sélectionne, modifie les chaînes d'un fichier ou de l'affichage en se basant sur les colonnes. La //ER// permet de sélectionner quelle(s) colonne(s) est (sont) concernée(s). | ||
* **sed -r** : **ERe**\\ même usage que sed. | * **sed -r** : **ERe**\\ même usage que sed. | ||
- | * **awk** : **ERe**\\ sélectionne les colonnes, lignes, mots d'un fichier, et modifie l'affichage, le fichier, etc. en utilisant la //ER// comme condition de l'action qu'on choisit. | + | * **awk**((c'est-à-dire **gawk**\\ ''whereis awk''\\ awk: /usr/bin/awk\\ ''ls -l /usr/bin/awk''\\ lrwxrwxrwx 1 root root 21 juin 8 18:43 /usr/bin/awk -> /etc/alternatives/awk\\ ''ls -l /etc/alternatives/awk''\\ lrwxrwxrwx 1 root root 13 juil. 13 18:41 /etc/alternatives/awk -> /usr/bin/**gawk**)) : **ERe**\\ sélectionne les colonnes, lignes, mots d'un fichier, et modifie l'affichage, le fichier, etc. en utilisant la //ER// comme condition de l'action qu'on choisit. |
Concernant chacun de ces programmes, je n'entrerai ni dans les combinaisons possibles entre eux, ni n'approfondirai chacun d'eux en détail. Voir pour cela la documentation à leur sujet.\\ | Concernant chacun de ces programmes, je n'entrerai ni dans les combinaisons possibles entre eux, ni n'approfondirai chacun d'eux en détail. Voir pour cela la documentation à leur sujet.\\ | ||
Ligne 218: | Ligne 218: | ||
Interpréter le MOTIF comme une expression rationnelle simple | Interpréter le MOTIF comme une expression rationnelle simple | ||
C'est le comportement par défaut. | C'est le comportement par défaut. | ||
+ | |||
</code> | </code> | ||
Ligne 339: | Ligne 340: | ||
====La commande find et les caractères communs aux ERb et ERe==== | ====La commande find et les caractères communs aux ERb et ERe==== | ||
+ | <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> | ||
<note tip> | <note tip> | ||
- | Les types de //ER// actuellement implémentés sont emacs.\\ | + | Ce qui donne :\\ |
- | Pour utiliser les ERb il faut utiliser l'option -regextype posix-basic pour définir le type de ER qu'on souhaite utiliser.\\ | + | <code> |
- | Mais aussi l'une des options prévenant find, qu'on va utiliser une ER, de même qu'on prévient qu'on cherche un motif en respectant la casse avec -name : | + | find -regextype "posix-basic" -regex "ERb" |
- | * ''-regex motif'' : Nom de fichier correspondant à l'expression rationnelle 'motif'.\\ Il s'agit d'une correspondance sur le chemin complet, pas d'une\\ recherche. Par exemple, pour mettre en correspondance un fichier\\ nommé « ./fubar3 », vous pouvez utiliser les expressions rationnelles « .*bar. » ou « .*b.*3 », mais pas « f.*r3 ».\\ | + | </code> |
+ | |||
+ | L'option -regextype posix-basic permet de définir le type de ER qu'on souhaite utiliser.\\ | ||
+ | |||
+ | Il faut aussi prévenir find, qu'on va utiliser une ER avec :((de même qu'on prévient qu'on cherche un motif en respectant la casse avec ''-name'')) | ||
+ | * **''-regex ER''** | ||
+ | * **''-iregex motif''** : Semblable à -regex, pour ne pas tenir compte de la casse (ne pas différencier les majuscules et les minuscules). | ||
- | * ''-iregex motif'' : Semblable à -regex, mais sans différencier les majuscules et les\\ minuscules. | + | Il s'agit d'une correspondance sur __le chemin complet__.\\ Pour représenter un chemin absolu quelqu'il soit, il faut mettre en début d'expression **''.*''**. |
</note> | </note> | ||
- | Je ne donnerai que quelques exemples, puisque tous les caractères de ERb sont utilisables. \\ Je m'attacherai surtout à la syntaxe de find pour ce faire. | + | Je ne donnerai que quelques exemples, puisque tous les caractères de ERb sont utilisables. \\ Je m'attacherai surtout à la syntaxe et au contexte d'utilisation des //ER// relatifs à find. |
* Soit le __répertoire parent__ des fichiers listés ci-dessous : | * Soit le __répertoire parent__ des fichiers listés ci-dessous : | ||
Ligne 634: | Ligne 649: | ||
=====Caractères spécifiques aux ERb ===== | =====Caractères spécifiques aux ERb ===== | ||
+ | Les commandes utilisent les caractères spécifiques aux expressions rationnelles basiques:\\ | ||
+ | grep (ou grep -G) ; find -regextype "posix-basic" ; locate --regexp ; sed (sans option) ; vi (vim) ; expr | ||
+ | |||
^expressions ^Modèles reconnus ^ | ^expressions ^Modèles reconnus ^ | ||
|**''<nowiki>\{m\}</nowiki>''** | m fois le caractère précédent | | |**''<nowiki>\{m\}</nowiki>''** | m fois le caractère précédent | | ||
Ligne 641: | Ligne 659: | ||
|**''<nowiki>\1, \2, ...</nowiki>''** | Rappel de mémorisation | | |**''<nowiki>\1, \2, ...</nowiki>''** | Rappel de mémorisation | | ||
+ | Les commandes grep, vi (vim), locate, find utilisent aussi les caractères spécifiques suivants : | ||
- | -> Le caractère **''\''** donne une signification spéciale aux parenthèses et accolades, au lieu de les rendre littérales.\\ | + | ^ ^ ^ |
+ | |**''<nowiki>\?</nowiki>''** | zéro ou une fois l'élément précédent | | ||
+ | |**''<nowiki>\+</nowiki>''** | une ou plusieurs fois l'élément précédent | | ||
+ | |**''<nowiki>\|</nowiki>''** | alternative | | ||
+ | |||
+ | |||
+ | |||
+ | -> Le caractère **''\''** donne une signification spéciale aux parenthèses et accolades, ?, +, | au lieu de les rendre littérales.\\ | ||
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> | <note tip> | ||
- | Je présenterai ici les commandes "spécifiques" aux ERb, c'est-à-dire, celles qui n'ont pas la possibilité d'utiliser les ERE, vi (vim) et expr.\\ | + | Je présenterai principalement les commandes "spécifiques" aux ERb, c'est-à-dire, celles qui n'ont pas la possibilité d'utiliser les ERE, vi (vim) et expr.\\ |
Elles utilisent bien sûr tous les caractères ERb et pas seulement les caractères spécifiques aux ERb. | Elles utilisent bien sûr tous les caractères ERb et pas seulement les caractères spécifiques aux ERb. | ||
+ | |||
+ | Je ne ferai ici qu'un bref rappel des autres commandes qui peuvent utiliser (en changeant d'option) les ERe plus lisibles((plus de ''\'' devant parenthèses, accolades, +, ? et |)). | ||
</note> | </note> | ||
Ligne 675: | Ligne 703: | ||
<note tip> | <note tip> | ||
* La commande expr utilise l'opérateur **'':''** pour mettre en correspondance une chaîne de caractères avec une //ER//. | * La commande expr utilise l'opérateur **'':''** pour mettre en correspondance une chaîne de caractères avec une //ER//. | ||
- | * Si le nombre de caractères de la chaîne correspond à l'ERb, alors expr affiche à l'écran l'expression régulière basique. | + | * Si le nombre de caractères de la chaîne correspond à l'ERb, alors expr affiche ce nombre à l'écran. |
* Si la correspondance décrite ci-dessus est vraie, le code de retour est 0 (zéro). | * Si la correspondance décrite ci-dessus est vraie, le code de retour est 0 (zéro). | ||
* Si elle est fausse, expr retourne 0 (zéro) pour "zéro correspondance) et le code de retour est 1 (un). | * Si elle est fausse, expr retourne 0 (zéro) pour "zéro correspondance) et le code de retour est 1 (un). | ||
Ligne 783: | Ligne 811: | ||
* enregistrez : '' :wq '' et touche <entrée> | * enregistrez : '' :wq '' et touche <entrée> | ||
- | * Pour apprendre les rudiment de l'utilisation de vim (et donc de vi), après l'installation de vim : | + | * En plus des [[utilisateurs:hypathie:tutos:erb-et-ere-par-le-contexte-des-commandes?&#caracteres-specifiques-aux-erb|caractères spécifiques aux ERb]] vi (vim) utilise les caractères spécifiques aux ERb ci-dessous (comme grep): |
- | vimtutor | + | |**''<nowiki>\?</nowiki>''** | zéro ou une fois l'élément précédent | |
+ | |**''<nowiki>\+</nowiki>''** | une ou plusieurs fois l'élément précédent | | ||
+ | |**''<nowiki>\|</nowiki>''** | alternative | | ||
+ | * Pour apprendre les rudiments de l'utilisation de vim (et donc de vi), après l'installation de vim : | ||
+ | |||
+ | vimtutor | ||
-> Pour y ajouter l'utilisation des //ER//, suivre ce qui suit. | -> Pour y ajouter l'utilisation des //ER//, suivre ce qui suit. | ||
Ligne 863: | Ligne 896: | ||
>"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 \| : | ||
+ | <code>/c\|t</code> | ||
+ | |||
+ | >surligne tous les "c" et tous les "t" du fichier. | ||
+ | |||
+ | * Utilisation de \? : | ||
+ | <code>/\.[0-9]\?</code> | ||
+ | |||
+ | ->Une image vaut mieux qu'une description :\\ | ||
+ | {{http://pix.toile-libre.org/upload/original/1407857157.png?400}} | ||
+ | |||
+ | * Utilisation de \+ : | ||
+ | <code>/[A-Z]\+</code> | ||
+ | -> Là aussi :\\ | ||
+ | {{http://pix.toile-libre.org/upload/original/1407856299.png?400}} | ||
<note> | <note> | ||
Ligne 879: | Ligne 928: | ||
===== grep, sed, find, locate et les caractères spécifiques aux ERb ===== | ===== grep, sed, find, locate et les caractères spécifiques aux ERb ===== | ||
- | Les commandes grep et sed sans option, et les commandes locate et locate avec option utilisent les caractères spécifiques aux ERb.\\ Puisqu'il est plus pratique de les utiliser avec les ERe qui sont plus lisibles, je n'en donnerai que quelques exemples. | + | Les commandes grep et sed sans option, les commandes locate --regexp et find -regextype “posix-basic” avec option utilisent les caractères spécifiques aux ERb.\\ Puisqu'il est plus pratique de les utiliser avec les ERe qui sont plus lisibles, je n'en donnerai que quelques exemples ici. |
==== grep ==== | ==== grep ==== | ||
Ligne 991: | Ligne 1040: | ||
====find utilise les ERb avec l'option -regextype "posix-basic" ==== | ====find utilise les ERb avec l'option -regextype "posix-basic" ==== | ||
- | <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-basic" -regex "ERb" | ||
- | </code> | ||
===Préparation=== | ===Préparation=== | ||
- | Dans le répertoire de l'utilisateur et dans le dosssier "ERetCMD/" | + | Dans le répertoire de l'utilisateur et dans le dossier "ERetCMD/" |
* Création de deux fichiers, "img-perso-1.jpg" et "img-perso-2.jpg" : | * Création de deux fichiers, "img-perso-1.jpg" et "img-perso-2.jpg" : |