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 18:05] Hypathie [Les expressions rationnelles basiques et les commandes GNU/Linux] |
utilisateurs:hypathie:tutos:erb-et-ere-par-le-contexte-des-commandes [13/08/2014 18:25] Hypathie [Les commandes expr et vi et les caractères spécifiques aux ERb] |
||
---|---|---|---|
Ligne 770: | Ligne 770: | ||
On appuie sur la touche shift+: pour inscrire ''/'', on inscrit sa ER, on valide avec la touche "entrée". vi ou vim surligne toutes les occurrences de "chose" qui sont en début de ligne. | On appuie sur la touche shift+: pour inscrire ''/'', on inscrit sa ER, on valide avec la touche "entrée". vi ou vim surligne toutes les occurrences de "chose" qui sont en début de ligne. | ||
+ | <code>nohlsearch</code> | ||
+ | Pour retirer la surbrillance de la recherche. | ||
+ | * le caractère fin de ligne $ | ||
+ | <code> | ||
+ | /chose$ | ||
+ | </code> | ||
+ | On valide avec entrée, et ''nohlsearch'' pour effacer | ||
+ | |||
+ | * sous-chaîne avec parenthèses et accolades : | ||
+ | <code> | ||
+ | \([0-9]\{3\}.\)\{2\} | ||
+ | </code> | ||
+ | Vi ou vim surligne à la ligne 9 (comportant "123.3456.abc") la sous-chaîne **''123.3456.''**. | ||
+ | |||
+ | ===Exemples de substitution=== | ||
+ | |||
+ | * crochets : | ||
+ | <code> | ||
+ | :s/[Ss]/XXX/g | ||
+ | </code> | ||
+ | >Substitue les caractères "S" ou "s" à la ligne du curseur et surligne toutes les occurrences potentiellement substituables. | ||
+ | > **''nohlsearch''** pour retirer la surbrillance. | ||
+ | >puis pour annuler la substitution "Échap", puis appuyer sur la lettre "u" ("u" pour annuler un seul changement, "U" pour annuler plusieurs changement sur une ligne. | ||
+ | |||
+ | * idem sur tout le texte : | ||
+ | <code> | ||
+ | :1,$s/[Ss]/XXX/g | ||
+ | </code> | ||
+ | |||
+ | >"1,$" est l'adressage qui signifie de la première ligne à la fin. | ||
+ | |||
+ | * utilisation de \| : | ||
+ | <code>/c\|t</code> | ||
+ | |||
+ | ->Une image vaut mieux qu'une description :\\ | ||
+ | {{http://pix.toile-libre.org/upload/original/1407937898.png?400}} | ||
Ligne 842: | Ligne 878: | ||
====La commande expr n'utilise que ERb==== | ====La commande expr n'utilise que ERb==== | ||
- | ===Préparation === | + | __ |
- | Soit le fichier "<nowiki>liste4-spec</nowiki>" : | + | **Rappel :**__\\ |
+ | |||
+ | * Soit le fichier "<nowiki>liste4-spec</nowiki>" : | ||
<code user>cat liste4-spec</code> | <code user>cat liste4-spec</code> | ||
<code> | <code> | ||
Ligne 862: | Ligne 901: | ||
chosechosechose | chosechosechose | ||
</code> | </code> | ||
- | ===Syntaxe === | + | |
+ | * Syntaxe : | ||
expr chaîne-de-caractères : expression-rationnelle-basique | expr chaîne-de-caractères : expression-rationnelle-basique | ||
<note tip> | <note tip> | ||
- | * 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 ce nombre à l'écran. | + | |
- | * 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). | + | |
- | * L'expression rationnelle est comparée par rapport au début de la variable, le caractère **''^''** est toujours implicite. | + | |
- | * Si une partie de l'expression rationnelle est mémorisée avec **''\( \)''** la commande expr affiche dans le terminal la partie correspondante. | + | |
* **''expr''** utilise tous les [[utilisateurs:hypathie:tutos:erb-et-ere-par-le-contexte-des-commandes?&#caracteres-communs-aux-erb-et-ere|caractères communs aux ERb et ERe]] | * **''expr''** utilise tous les [[utilisateurs:hypathie:tutos:erb-et-ere-par-le-contexte-des-commandes?&#caracteres-communs-aux-erb-et-ere|caractères communs aux ERb et ERe]] | ||
* mais elle n'utilise que les caractères spécifiques aux ERb ci-dessous : | * mais elle n'utilise que les caractères spécifiques aux ERb ci-dessous : | ||
Ligne 884: | Ligne 919: | ||
</note> | </note> | ||
- | ===Exemples === | + | ===Exemple === |
- | * crochet, étoile, fin de ligne : | + | |
- | <code user>var=123</code> | + | |
- | <code user>expr "$var" : '[0-9]*$'</code> | + | |
- | <code> | + | |
- | 3 | + | |
- | </code> | + | |
- | + | ||
- | >"3" ne doit pas être confondu avec un code de retour, c'est le nombre de caractères de la variable qui correspondent à //ER//. | + | |
- | + | ||
- | <code user>echo $?</code> | + | |
- | <code> | + | |
- | 0 | + | |
- | </code> | + | |
- | + | ||
- | >La correspondance est vraie : code de retour "0". | + | |
- | >La variable comporte bien 3 caractères 1, 2, et 3 et non le chiffre "123"; il s'agit d'une comparaison sur chaîne de caractères. | + | |
- | + | ||
- | * ER qui ne correspond pas à la chaîne de la variable : | + | |
- | <code user>var="les bonbons, c'est bon"</code> | + | |
- | <code user>expr "$var" : 'bons\>'</code> | + | |
- | <code> | + | |
- | 0 | + | |
- | </code> | + | |
- | + | ||
- | >zéro est le nombre de caractère correspondant | + | |
- | + | ||
- | <code user>echo $?</code> | + | |
- | <code> | + | |
- | 1 | + | |
- | </code> | + | |
- | + | ||
- | > Le chiffre "1" est le code de retour. | + | |
- | + | ||
- | * sous chaîne avec caractère fin de mot : | + | |
- | <code user>var="les bonbons, c'est bon"</code> | + | |
- | <code user>expr "$var" : '\(.*bons\>\),'</code> | + | |
- | <code> | + | |
- | les bonbons | + | |
- | </code> | + | |
- | + | ||
- | >Demander le code de retour est inutile, la ER est forcément juste, s'il y a affichage de la sous-chaîne correspondante. À moins d'en avoir besoin lors d'une utilisation de expr dans un script shell s'en servant pour un test. | + | |
* sous-chaîne et quantificateur accolades : | * sous-chaîne et quantificateur accolades : | ||
Ligne 947: | Ligne 941: | ||
====L'éditeur de texte vi et les caractères spécifiques aux ERb==== | ====L'éditeur de texte vi et les caractères spécifiques aux ERb==== | ||
+ | |||
+ | <note tip> | ||
+ | **'' 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>''** | une ou plusieurs fois l'élément précédent | | ||
+ | |**''<nowiki>\|</nowiki>''** | alternative | | ||
+ | |||
+ | </note> | ||
* Reprise du fichier "liste4-vim" : | * Reprise du fichier "liste4-vim" : |