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
utilisateurs:hypathie:tutos:erb-et-ere-par-le-contexte-des-commandes [14/08/2014 16:51]
Hypathie [Introduction]
utilisateurs:hypathie:tutos:erb-et-ere-par-le-contexte-des-commandes [15/08/2014 11:54]
Hypathie [Caractères spécifiques aux ERb ou caractères spécifiques aux ERe]
Ligne 64: Ligne 64:
 |**''​[ ]''​** |un caractère cité dans la liste entre crochets |''​echo [Tt][io]t[io]''​((echo "Toto Tito toto toti tito loto" | echo [Tt][io]t[io]))\\ **affiche les fichiers**\\ Toto\\ Tito\\ toto\\ toti\\ ...\\ **mais pas**\\ loto\\ ... | |**''​[ ]''​** |un caractère cité dans la liste entre crochets |''​echo [Tt][io]t[io]''​((echo "Toto Tito toto toti tito loto" | echo [Tt][io]t[io]))\\ **affiche les fichiers**\\ Toto\\ Tito\\ toto\\ toti\\ ...\\ **mais pas**\\ loto\\ ... |
 |**''​[ - ]''​**\\ [a-z]\\ [A-Z]\\ [A-Z]\\ [0-9] |groupe de caractères |''​head t[a-z]to''​\\ **affiche**\\ titi\\ tito\\ toto\\ ...\\ **mais pas**\\ tOto\\ t5to\\ | |**''​[ - ]''​**\\ [a-z]\\ [A-Z]\\ [A-Z]\\ [0-9] |groupe de caractères |''​head t[a-z]to''​\\ **affiche**\\ titi\\ tito\\ toto\\ ...\\ **mais pas**\\ tOto\\ t5to\\ |
 +
 +===Préparation===
 +
 +    * Exécuter cette ligne de commande :
 +<code user>
 +mkdir ERetCMD/ && cd ERetCMD/ && mkdir Dossier/ &&\
 + cd Dossier/ && touch milou && touch tata &&\
 + ​printf "Toto Titi toto titi tito\ndans\n"​ > titi &&\
 + ​printf "Toto Titi\ndent\n"​ > titi2 &&\
 + ​printf "toto aime le chocolat\n"​ > toto &&\
 + ​printf "Toto titi toto tito\n"​ > Toto.txt &&\
 + ​printf "un copain malin\nmodifiant cette page\n"​ > tintin &&\
 + ​printf "​documentation\n"​ > titi1 && printf "​."​ > titi1.txt &&\
 + ​printf "Il manque une option a tito\n"​ > tito &&\
 + ​printf "il a tout mangé.\n"​ > Toto1.txt
 +ls
 +</​code>​
 +
 +<​code>​
 +milou  tintin ​ titi1  ​ titi2  toto     Toto.txt
 +tata   ​titi ​   titi1.txt ​ tito Toto1.txt
 +</​code>​
 +
 +<​note>​
 +Il est nécessaire d'​avoir dossier, sous-dossier,​ et des fichiers ayant ou non du contenu pour s'​exercer.\\ ​
 +Mais pas d'​inquiétude,​ tout ce qui a été créé ou qui le sera, peut être supprimer en une ligne:
 +<code user>
 +cd ~ && rm -vfR ERetCMD/
 +</​code>​
 +Le dossier et fichiers créés dans le dossier "​ERetCMD"​ au cours de cette partie serviront aux exemples d'​utilisation des expressions rationnelles avec chacun des programmes GNU/Linux. Mieux vaut ne pas les supprimer dès la fin de cette partie.
 +</​note>​
  
 ===Métacaractère ou caractère d'​expression rationnelle ?=== ===Métacaractère ou caractère d'​expression rationnelle ?===
  
-  * L'étoile ​+  * __L'étoile__ ​
-Imaginons qu'on cherche __tous les fichiers__ ​contenant le caractère "​e"​.\\ ​+Imaginons qu'on cherche __tous les fichiers commençant par "​t"​__ ​contenant le caractère "​e"​.\\ ​
  
-<code user>​grep -lR "​e" ​Toto*</​code>​+<code user>​grep -lR "​e" ​t*</​code>​ 
 +<​code>​ 
 +tintin 
 +titi1 
 +titi2 
 +tito 
 +toto 
 +</​code>​
  
 > option -l : Ne  pas  afficher les résultats normaux. À la place, indiquer le nom des  fichiers ​ pour  lesquels ​ des  résultats ​ auraient ​ été affichés. > option -l : Ne  pas  afficher les résultats normaux. À la place, indiquer le nom des  fichiers ​ pour  lesquels ​ des  résultats ​ auraient ​ été affichés.
 > option -R : Lire récursivement tous les fichiers ​ à  l'​intérieur ​ de  chaque répertoire. > option -R : Lire récursivement tous les fichiers ​ à  l'​intérieur ​ de  chaque répertoire.
->Ce qui concerne la recherche dans le contenu du fichier ​est indiqué par le motif entre guillemets ("​e"​). C'est là qu'​il ​faudra avec grep placer l'​expression rationnelle. Le motif "​e"​ en est d'​ailleurs une. +>Le motif entre guillemets ("​e"​) ​concerne la recherche dans le contenu du fichier. C'est là qu'​il ​faut  ​placer l'​expression rationnelle. Le motif "​e"​ en est d'​ailleurs une. 
->Le caractère "​*"​ est le métacaractère qui signifie "__nom de fichier__ commençant par "​Toto"​ avec n'​importe quel autre caractère après ou pas+>Le caractère "​*"​ est le métacaractère qui signifie "__nom de fichier__ commençant par "​Toto"​ avec n'​importe quel autre caractère après ou rien après
  
-  * Le caractère ?+  * __Le caractère ?__
 <​code>​grep -E "​[ae]n.?"​ titi?</​code>​ <​code>​grep -E "​[ae]n.?"​ titi?</​code>​
 +
 +>Il faut grep -E car le **''?''​** fait partie des expressions rationnelles étendues.
 +>On peut aussi faire **''​grep "​[ae]n.\?"​ titi?''​** car grep utilise par défaut les expressions rationnelles basiques qui nécessitent **''​\''​** devant certains caractères.
 +
 <​code>​ <​code>​
-titi.:​dans +titi1:documentation
-titi1:en+
 titi2:dent titi2:dent
 </​code>​ </​code>​
  
->Cela signifie qu'​on ​recherche dans les fichiers commençant par **''​titi''​** suivi d'un seul caractère exactement, ​et dans lequel on cherche ​les mots comportant ​la diphtongue ɑ̃ qui s'​écrit ​"​an"​ ou "​en" ​; l'​expression rationnelle décrit ​ainsi : chaîne composée de "​a"​ ou "​e",​ suivi de "​n",​ suivi d'un seul caractère ou non+>On recherche dans les fichiers commençant par **''​titi''​** ​et suivi d'un seul caractère exactement ​(**''?''​**), les mots comportant "​an"​ ou "​en"​.((Ici le caractère précédent est le "​point",​ c'​est-à-dire un caractère quelconque.)) 
-> Le **''?''​** est un caractère d'​expressions rationnelles et signifie "le caractère précédent (ou le groupement précédent) zéro ou une fois. Ici le caractère précédent est le "​point",​ c'​est-à-dire un caractère quelconque. +>L'​expression rationnelle décrit : une chaîne composée de "​a"​ ou "​e",​ suivi de "​n",​ suivi d'un seul caractère ou non.
->Il faut grep -E car le **''?''​** fait partie des expressions rationnelles étendues. +
->On peut aussi faire **''​grep "​[ae]n.\?"​ titi?''​** car grep utilise par défaut les expressions rationnelles basiques qui nécessitent **''​\''​** devant certains caractères.+
  
-  * Les crochets ​ont la même signification en tant que métacaractère et en tant que //ER//+  * __Les crochets__ ​ont la même signification en tant que métacaractère et en tant que //ER//
  
 >Pour trouver dans les fichiers commençant par "​T"​ ou "​t"​ suivi de "​i"​ ou "​o"​ suivi d'un "​t"​ suivi de "​i"​ ou "​o"​ suivi d'un caractère quelconque et un seul ; >Pour trouver dans les fichiers commençant par "​T"​ ou "​t"​ suivi de "​i"​ ou "​o"​ suivi d'un "​t"​ suivi de "​i"​ ou "​o"​ suivi d'un caractère quelconque et un seul ;
Ligne 97: Ligne 136:
 <code user>​grep "​[Tt][io]t[io]"​ [Tt][io]t[io]?</​code>​ <code user>​grep "​[Tt][io]t[io]"​ [Tt][io]t[io]?</​code>​
 <​code>​ <​code>​
-titi.:Toto Titi toto titi tito +grep "​[Tt][io]t[io]"​ [Tt][io]t[io]?​
-titi1:Toto titi toto tito +
-titi2:Toto Titi +
-toto.:Toto titi toto tito+
 </​code>​ </​code>​
  
-  * Le point n'est pas un métacaractère ​:+  * __Le point n'est pas un métacaractère__ ​:
  
 > mais c'est un caractère des expressions rationnelles. > mais c'est un caractère des expressions rationnelles.
Ligne 111: Ligne 147:
 <​code>​ <​code>​
 titi1.txt:. titi1.txt:.
-Toto1.txt:.+Toto1.txt:il a tout mangé.
 </​code>​ </​code>​
  
Ligne 119: Ligne 155:
  
 Il s'agit de **find** et **locate**. Il s'agit de **find** et **locate**.
- 
-===Péparation=== 
-  * créer le répertoire "​~/​ERetCMD/"​ et ~/​ERetCMD/​Dossier:​ 
-<code user>​mkdir ERetCMD/ && cd ERetCMD/ && mkdir Dossier/</​code>​ 
- 
-  * Créer les fichiers suivants : 
-<code user>cd Dossier/ && touch milou test titi\ 
- titi1 titi2 tito toto. Toto.txt tata tintin titi.\ 
- ​titi.txt titi1.txt toto Toto1.txt 
-</​code>​ 
- 
-  * Pour supprimer le répertoire et tout son contenu ​ : 
-(néanmoins,​ ils serviront pour l'​ensemble du wiki) 
-<​code>​rm -vfR ERetcmd/</​code>​ 
  
 === find=== === find===
 //Depuis le répertoire personnel ou le répertoire "​~ERetCMD"​ ou même le répertoire "​~/​ERetCMD/​Dossier/"//​ //Depuis le répertoire personnel ou le répertoire "​~ERetCMD"​ ou même le répertoire "​~/​ERetCMD/​Dossier/"//​
  
-  *Étoile ​:+  * __Étoile__ ​:
  
 <code user>​find ~/​ERetCMD/​Dossier/​ -name "​toto*"</​code>​ <code user>​find ~/​ERetCMD/​Dossier/​ -name "​toto*"</​code>​
 <​code>​ <​code>​
 /​home/​hypathie/​ERetCMD/​Dossier/​toto /​home/​hypathie/​ERetCMD/​Dossier/​toto
-/​home/​hypathie/​ERetCMD/​Dossier/​toto. 
 </​code>​ </​code>​
  
-  * Le point d'​interrogation :+  * __Le point d'​interrogation :__
  
 <code user>​find ~/​ERetCMD/​Dossier/​ -name "​titi?"</​code>​ <code user>​find ~/​ERetCMD/​Dossier/​ -name "​titi?"</​code>​
Ligne 151: Ligne 172:
 /​home/​hypathie/​ERetCMD/​Dossier/​titi1 /​home/​hypathie/​ERetCMD/​Dossier/​titi1
 /​home/​hypathie/​ERetCMD/​Dossier/​titi2 /​home/​hypathie/​ERetCMD/​Dossier/​titi2
-/​home/​hypathie/​ERetCMD/​Dossier/​titi. 
 </​code>​ </​code>​
  
-  * Crochets ​:+  * __Crochets ​:__
  
 <code user>​find ~/​ERetCMD/​Dossier/​ -name "​[Tt][io]t[io]?"</​code>​ <code user>​find ~/​ERetCMD/​Dossier/​ -name "​[Tt][io]t[io]?"</​code>​
Ligne 160: Ligne 180:
 /​home/​hypathie/​ERetCMD/​Dossier/​titi1 /​home/​hypathie/​ERetCMD/​Dossier/​titi1
 /​home/​hypathie/​ERetCMD/​Dossier/​titi2 /​home/​hypathie/​ERetCMD/​Dossier/​titi2
-/​home/​hypathie/​ERetCMD/​Dossier/​toto. 
-/​home/​hypathie/​ERetCMD/​Dossier/​titi. 
 </​code>​ </​code>​
  
 ===locate === ===locate ===
  
-  * Préparation ​:+  * __Préparation ​:__
  
-Soit le même répertoire "​~/​ERetCMD/"​ ; y créer les fichiers suivants :+Se déplacer dans le répertoire "​~/​ERetCMD/"​ ; y créer les fichiers suivants ​en faisant ​:
 <code user> <code user>
-touch liste liste1 liste1-nom liste2\+cd ~/ERetCMD/ && ​touch liste liste1 liste1-nom liste2\
  ​liste2-nom liste3-erb-ere liste4-spec\  ​liste2-nom liste3-erb-ere liste4-spec\
  ​liste4-vim liste-class server-0.xkb smolski-exo-sed.txt\  ​liste4-vim liste-class server-0.xkb smolski-exo-sed.txt\
Ligne 176: Ligne 194:
  ​image\ linux\ -\ 01.jpg image\ linux\ -\ 02.jpg\  ​image\ linux\ -\ 01.jpg image\ linux\ -\ 02.jpg\
  ​image\ linux\ -\ 03.jpg img-perso-1.jpg img-perso-2.jpg  ​image\ linux\ -\ 03.jpg img-perso-1.jpg img-perso-2.jpg
 +ls
 </​code>​ </​code>​
- 
-<​code>​ls ~/​ERetCMD/</​code>​ 
- 
  
 <​code>​ <​code>​
Ligne 191: Ligne 207:
 <note tip> <note tip>
 Pour utiliser locate, qui fonctionne à partir de la base de donnée, faire un petit : Pour utiliser locate, qui fonctionne à partir de la base de donnée, faire un petit :
-<code root> ​updatedb</​code>​+<code root>​updatedb</​code>​
 pour effectuer les mises à jour, avant de lancer la recherche. pour effectuer les mises à jour, avant de lancer la recherche.
 </​note>​ </​note>​
Ligne 205: Ligne 221:
 /​home/​hypathie/​ERetCMD/​sort3.txt /​home/​hypathie/​ERetCMD/​sort3.txt
  
 +</​code>​
 +
 +===sed===
 +
 +  * __sed utilise aussi les deux :__
 +
 +Vérifier qu'on est bien au niveau du "​~/​ERetCMD/​Dossier/" ​
 +
 +<code user>sed -r '/​(a|e).*/​s/​a/​A/'​ ti*</​code>​
 +
 +> L'​expression rationnelle est constituée de l'​alternative ''​(a|e)''​ (la sous-chaîne "​a"​ ou "​e"​),​ suivi d'un caractère quelconque zéro ou plusieurs fois.
 +>Cela sera approfondit dans la partie [[utilisateurs:​hypathie:​tutos:​erb-et-ere-par-le-contexte-des-commandes#​caracteres-specifiques-aux-erb-ou-caracteres-specifiques-aux-ere|Caractères spécifiques aux ERb ou caractères spécifiques aux ERe]]
 +
 +<​code>​
 +un copAin malin
 +modifiAnt cette page
 +Toto Titi toto titi tito
 +dAns
 +documentAtion
 +.
 +Toto Titi
 +dent
 +Il mAnque une option a tito
 +</​code> ​
 +
 +===awk ===
 +
 +  * __De même encore pour awk :__
 +
 +Dans le dossier "​~/​ERetCMD/​Dossier"​ créer les fichiers "​smolski-awk.txt"​ et "​smolski-sed.txt":​
 +<code user>
 +touch smolski-sed.txt && cat >> smolski-sed.txt <<EOF
 +toto et titi aiment les abricots.
 +toto préfère les Fraises.
 +titi les cerises.
 +TOTo et TITI sont des chipoteurs du jardin.
 +EOF
 +</​code>​
 +
 +<code user>​touch smolski-awk.txt && cat >> smolski-awk.txt <<EOF
 +1 3 Nom         ​Genre ​          Age
 +2 1 ---------------------------------------
 +3 3 CAMILLE ​            ​M ​              7
 +4 3 CHLOE               ​F ​              12
 +5 3 CLARA               ​F ​              11
 +6 3 CLEMENT ​            ​M ​              7
 +7 3 EMMA                F               6
 +8 3 THEO                M               8
 +EOF
 +</​code>​
 +
 +  * Utilisation d'une ER et de métacaractère avec awk :
 +<code user>awk '$3 ~ /​(e|E)/'​ smolski-*</​code>​
 +
 +>Affiche les lignes dont la troisième colonne comporte un "​e"​ ou un "​E"​ de TOUS les fichiers du répertoire "​~/​ERetCMD/​Dossier"​ commençant par "​smolski-"​.
 +>Le caractère ''​~''​ (tilde) est un opérateur de correspondance relevant de la commande awk. 
 +>Il permet de tester la correspondance entre la variable ''​$3''​ et l'​expression rationnelle encadrée de ''/''​ (''/​(e|E)/''​). Voir [[utilisateurs:​hypathie:​tutos:​erb-et-ere-par-le-contexte-des-commandes#​awk-et-les-caracteres-communs-aux-erb-et-ere|awk et les expressions rationnelles]]
 +
 +<​code>​
 +3 3 CAMILLE ​            ​M ​              7
 +4 3 CHLOE               ​F ​              12
 +6 3 CLEMENT ​            ​M ​              7
 +7 3 EMMA                F               6
 +8 3 THEO                M               8
 +toto préfère les Fraises.
 +titi les cerises.
 </​code>​ </​code>​
  
 <note tip> <note tip>
-  *__sed et awk__\\ Ces commandes ​étant ​faites pour travailler le contenu des fichierset non pour la recherche ​de fichierselles n'utilisent pas les métacaractères du shell.+Pour vi (vim), il faut avoir édité le ou les fichiers pour utiliser les expressions rationnelles,​ 
 +mais on peut __utiliser les métacaractères pour ouvrir plusieurs fichiers en même temps__.\\  
 + 
 +Par exemple en étant ​au niveau du fichier "​~/​ERetCMD/​Dossier"​ : 
 + 
 +<code user>vim smolski-*</​code>​ 
 + 
 +Les fichiers ​"​smolski-awk.txt" ​et "​smolski-sed.txt"​ seront ouverts.\\  
 +Et pour passer ​de l'un à l'​autre : on tape au clavier '':​next''​pour passer au second, si on se trouve devant le premier;\\  
 +ou '':​previous'',​ si l'on se trouve devant le second et qu'on veut revenir au premier.
  
 +D'​autres exemples un peu plus détaillés sur [[utilisateurs:​hypathie:​tutos:​erb-et-ere-par-le-contexte-des-commandes#​la-commande-sed-et-les-caracteres-communs-aux-erb-et-ere|sed]],​ [[utilisateurs:​hypathie:​tutos:​erb-et-ere-par-le-contexte-des-commandes#​awk-et-les-caracteres-communs-aux-erb-et-ere|awk]] et [[utilisateurs:​hypathie:​tutos:​erb-et-ere-par-le-contexte-des-commandes#​l-editeur-de-texte-vi-n-utilise-aussi-que-les-erb|vim]] seront donnés.
 </​note>​ </​note>​
  
-**Puisque tout est bien clair, nous pouvons aller plus loin, et présenter ​comment utiliser ​les programmes GNU/​Linux ​permettant d'​utiliser les expressions rationnelles. Cela permettra ​aussi, non seulement de distinguer ERb, ERe et classes, mais encore d'en apprécier les différents types.**  8-)+**Puisque tout est bien clair, nous pouvons aller plus loin, et présenter ​le détail des expressions rationnelles ainsi que leur utilisation avec les programmes GNU/Linux. Cela permettra, non seulement de distinguer ERb, ERe et classes, mais encore d'en apprécier les différences.**  8-)
  
 =====Les expressions rationnelles basiques et les commandes GNU/​Linux===== =====Les expressions rationnelles basiques et les commandes GNU/​Linux=====
Ligne 254: Ligne 346:
 </​note>​ </​note>​
  
-  ​Soit le fichier "​liste1-nom"​ : +===Préparation === 
-<​code>​+  ​Dans le répertoire "​~/​ERetCMD/"​ inscrire le contenu suivant dans le fichier "​liste1-nom"​ : 
 +<​code>​cd ~/ERetCMD/ && cat >> liste1-nom << EOF
 1 2 Francine 1 2 Francine
 2 3 Édith 2 3 Édith
Ligne 268: Ligne 361:
 6 8 Amanda 6 8 Amanda
  
 +EOF
 </​code>​ </​code>​
  
 >La dernière ligne du fichier est vide. >La dernière ligne du fichier est vide.
  
-===le caractère début de ligne ^ ===+===Le caractère début de ligne ^ ===
 <code user>​grep "​^4"​ liste1-nom</​code>​ <code user>​grep "​^4"​ liste1-nom</​code>​
  
   4 5 Béatrice   4 5 Béatrice
  
-  *le caractère fin de ligne $ +===Le caractère fin de ligne $ ===
 <code user>​grep "​e$"​ liste1-nom</​code>​ <code user>​grep "​e$"​ liste1-nom</​code>​
  
   1 2 Francine   1 2 Francine
   3 4 Géraldine   3 4 Géraldine
 +  tout le monde
   4 5 Béatrice   4 5 Béatrice
   5 6 Christelle   5 6 Christelle
Ligne 291: Ligne 385:
 <code user>​grep "​^$"​ liste1-nom</​code>​ <code user>​grep "​^$"​ liste1-nom</​code>​
  
-===le point===+===Le point===
 <code user>​grep "​.dith"​ liste1-nom</​code>​ <code user>​grep "​.dith"​ liste1-nom</​code>​
  
   2 3 Édith   2 3 Édith
  
-===l'​étoile===+===L'​étoile===
 <code user>​grep "​A*"​ liste1-nom</​code>​ <code user>​grep "​A*"​ liste1-nom</​code>​
 <​code>​ <​code>​
Ligne 314: Ligne 408:
 </​code>​ </​code>​
  
-Attention, il ne s'agit pas du métacaractère. Étoile signifie "zéro ou plusieurs '​A'"​ ; **zéro** fois aussi, donc toutes les lignes dépourvues du caractère "​A"​ apparaissent ​aussicompris la ligne vide.+>Encore une fois, il ne s'agit pas du métacaractère. ​ 
 +>Étoile signifie "zéro ou plusieurs '​A'"​ ; **zéro** fois aussi. Donc toutes les lignes dépourvues du caractère "​A"​ apparaissent, ​__y compris la ligne vide__. 
 + 
 +  * __Autre exemple :__
  
 <code user>​grep "123 A*" liste1-nom</​code>​ <code user>​grep "123 A*" liste1-nom</​code>​
Ligne 320: Ligne 417:
   123 AAAAAA   123 AAAAAA
  
-===les crochets===+===Les crochets===
 <code user>​grep "​[43]"​ liste1-nom</​code>​ <code user>​grep "​[43]"​ liste1-nom</​code>​
  
Ligne 328: Ligne 425:
   4 5 Béatrice   4 5 Béatrice
  
->les lignes comportant 4 ou 3+>Les lignes comportant 4 ou 3
  
-===le caractère d'​exclusion d'une liste [^ ]===+===Le caractère d'​exclusion d'une liste [^ ]===
  
 >Chaîne qui commence ni par 1, ni par 2, ni par aucun des caractères entre crochets. >Chaîne qui commence ni par 1, ni par 2, ni par aucun des caractères entre crochets.
Ligne 340: Ligne 437:
   toutefois   toutefois
  
-  *Chaîne qui ne se termine pas par le caractère "​e"​. +  *Chaîne qui ne se termine pas par l'un des caractères de l'​intervalle
-<code user>​grep "​[^e]$"​ liste1-nom</​code>​ +
- +
-  2 3 Édith +
-  123 AAAAAA +
-  partout +
-  toutefois +
-  6 8 Amanda +
- +
-  *Chaîne qui ne se termine pas l'un des caractères de l'​intervalle ​+
 <code user>​grep "​[^a-z]$"​ liste1-nom</​code>​ <code user>​grep "​[^a-z]$"​ liste1-nom</​code>​
  
Ligne 361: Ligne 449:
  
 ===Le caractère fin de mot \>=== ===Le caractère fin de mot \>===
-<code user>​grep "​fois\>"​ liste1-nom </​code>​+<code user>​grep "​fois\>"​ liste1-nom</​code>​
  
   toutefois   toutefois
  
-  *Un mot exactement \<​mot\>​+  * __Et un mot exactement \<​mot\> ​:__ 
 <code user>​grep "​\<​tout\>"​ liste1-nom</​code>​ <code user>​grep "​\<​tout\>"​ liste1-nom</​code>​
  
Ligne 381: Ligne 470:
  
 <note tip> <note tip>
-Avec find il faut toujours une option pour utiliser une //​ER//​.\\ ​+Avec findil faut toujours une option pour utiliser une //​ER//​.\\ ​
  
   * Pour une expression rationnelle basique :\\    * Pour une expression rationnelle basique :\\ 
Ligne 406: Ligne 495:
  
  
-  * Soit le __répertoire parent__ ​des fichiers ​listés ci-dessous ​:+  * Rappel ​des fichiers ​contenus dans "​~/​ERetCMD/"​: 
 <​code>​ls</​code>​ <​code>​ls</​code>​
 <​code>​ <​code>​
-Dossier ​      liste1-nom~     server-0.xkb    ​sort2.txt +Dossier       img-perso-2.jpg ​ liste2-nom      server-0.xkb 
-essai.grep2~ ​ liste2-nom      ​smolski-exo-sed.txt  ​sort3.txt +image linux - 01.jpg  liste  ​      ​liste3-erb-ere  ​smolski-exo-sed.txt 
-liste1-nom ​   ​liste3-erb-ere ​ sort1.txt    xxx-sort.txt+image linux - 02.jpg ​ liste1  ​      ​liste4-spec ​    sort1.txt 
 +image linux - 03.jpg  ​liste1-nom ​      liste4-vim      sort2.txt 
 +img-perso-1.jpg ​      ​liste2  ​      ​liste-class ​    sort3.txt
 </​code>​ </​code>​
  
-  * caractères ​point et étoiles :+  * __Caractères ​point et étoiles :__
  
 <​code>​find -regextype "​posix-basic"​ -regex "​.*/​li.*m"</​code>​ <​code>​find -regextype "​posix-basic"​ -regex "​.*/​li.*m"</​code>​
Ligne 420: Ligne 512:
 ./​liste2-nom ./​liste2-nom
 ./​liste1-nom ./​liste1-nom
 +./​liste4-vim
 </​code>​ </​code>​
  
Ligne 428: Ligne 521:
 <​code>​find -regextype "​posix-basic"​ -regex "​.*/​li.*m"</​code>​ <​code>​find -regextype "​posix-basic"​ -regex "​.*/​li.*m"</​code>​
 <​code>​ <​code>​
-./ERetCMD/​liste2-nom +./​liste2-nom 
-./ERetCMD/liste1-nom+./​liste1-nom 
 +./​liste4-vim
 ./​.config/​libreoffice/​3/​user/​gallery/​sg100.thm ./​.config/​libreoffice/​3/​user/​gallery/​sg100.thm
 ./​.config/​libreoffice/​3/​user/​gallery/​sg30.thm ./​.config/​libreoffice/​3/​user/​gallery/​sg30.thm
 </​code>​ </​code>​
  
-  *Avec les crochets :+  * __Avec ​les crochets :__
  
->​fichiers comportant un "​e"​ ou un "​s",​ plusieurs caractères,​ un point littéral (\.), plusieurs caractères :+>Dans le répertoire "​~/​ERetCMD/",​ les fichiers comportant un "​e"​ ou un "​s",​ plusieurs caractères,​ un point littéral (\.), plusieurs caractères :
  
 <code user>​find -regextype "​posix-basic"​ -regex "​.*/​[es].*\..*"</​code>​ <code user>​find -regextype "​posix-basic"​ -regex "​.*/​[es].*\..*"</​code>​
 <​code>​ <​code>​
 +./​Dossier/​smolski-sed.txt
 +./​Dossier/​smolski-awk.txt
 ./​smolski-exo-sed.txt ./​smolski-exo-sed.txt
 ./​server-0.xkb ./​server-0.xkb
 ./sort3.txt ./sort3.txt
 ./sort1.txt ./sort1.txt
-./​essai.grep2~ 
 ./sort2.txt ./sort2.txt
 </​code>​ </​code>​
Ligne 477: Ligne 572:
  
  
-  *Contrairement à find, __il n'est pas nécessaire que la ER corresponde au chemin absolu d'un fichier__.\\ ​+  * Contrairement à find, __il n'est pas nécessaire que la ER corresponde au chemin absolu d'un fichier__.\\ ​
 Mais la quantité de réponses peut être très élevée, et si l'on a une idée du répertoire dans lequel se trouve le fichier recherché, il peut plus confortable de le préciser.\\ ​ Mais la quantité de réponses peut être très élevée, et si l'on a une idée du répertoire dans lequel se trouve le fichier recherché, il peut plus confortable de le préciser.\\ ​
 On peut aussi filtrer le retour avec grep.\\ ​ On peut aussi filtrer le retour avec grep.\\ ​
Ligne 483: Ligne 578:
   * Enfin, avec l'​utilisation de locate, le caractère début (^) est inusité.\\ ​   * Enfin, avec l'​utilisation de locate, le caractère début (^) est inusité.\\ ​
  
-En effet, avec une commande qui recherche des noms de fichier, la seule possibilité serait **''​^/''​**. Or locate permet justement de ne pas avoir à donner le chemin absolu du fichier recherché. L'​utiliser ne ferait qu'​allonger inutilement l'​expression régulière !+En effet, avec une commande qui recherche des noms de fichier, la seule possibilité serait **''​^/''​**. Or locate permet justement de ne pas avoir à donner le chemin absolu du fichier recherché. L'​utiliser ne ferait qu'​allonger inutilement l'​expression régulière !\\ 
 </​note>​ </​note>​
  
-  ​Étoile ​et point+<code root>​updatedb</​code>​ 
 + 
 +  ​__Étoile ​et point :__ 
 + 
 +>Éviter ce qui suit qui donne un retour de plusieurs pages : 
 <code user>​locate --regexp '/​home.*[Tt]o.*'</​code>​ <code user>​locate --regexp '/​home.*[Tt]o.*'</​code>​
  
->Donne un retour de plusieurs pages.+On peut faire par exemple :
  
 <code user>​locate --regexp '/​home.*[Tt]o.*'​ | grep "/​Dossier/"</​code>​ <code user>​locate --regexp '/​home.*[Tt]o.*'​ | grep "/​Dossier/"</​code>​
Ligne 497: Ligne 597:
 /​home/​hypathie/​ERetCMD/​Dossier/​tito /​home/​hypathie/​ERetCMD/​Dossier/​tito
 /​home/​hypathie/​ERetCMD/​Dossier/​toto /​home/​hypathie/​ERetCMD/​Dossier/​toto
-/​home/​hypathie/​ERetCMD/​Dossier/​toto. 
 </​code>​ </​code>​
  
-  * caractère ​fin de ligne $ :+  * __Caractère ​fin de ligne $ :__ 
 <code user>​locate --regexp '/​home.*/​Dossier/​[Tt]o.*\.txt$'</​code>​ <code user>​locate --regexp '/​home.*/​Dossier/​[Tt]o.*\.txt$'</​code>​
 <​code>​ <​code>​
Ligne 507: Ligne 607:
 </​code>​ </​code>​
  
-  * Le caractère début de mot ''​\<''​ :+  * __Le caractère début de mot ''​\<''​ :__ 
 <code user>​locate --regexp '​.*\<​smolski.*'</​code>​ <code user>​locate --regexp '​.*\<​smolski.*'</​code>​
 <​code>​ <​code>​
 /​home/​hypathie/​ERetCMD/​smolski-exo-sed.txt /​home/​hypathie/​ERetCMD/​smolski-exo-sed.txt
 +/​home/​hypathie/​ERetCMD/​Dossier/​smolski-awk.txt
 +/​home/​hypathie/​ERetCMD/​Dossier/​smolski-sed.txt
 </​code>​ </​code>​
  
 ====La commande sed et les caractères communs aux ERb et ERe==== ====La commande sed et les caractères communs aux ERb et ERe====
  
 +<​note>​
 Pour les caractères considérés ci-dessus, ''​. ; *, ^, $, [liste de caractères],​ [^liste de caractères],​ \<, \>'',​\\ ​ Pour les caractères considérés ci-dessus, ''​. ; *, ^, $, [liste de caractères],​ [^liste de caractères],​ \<, \>'',​\\ ​
  __il en va de même pour la commande sed que pour la commande grep__.\\ ​  __il en va de même pour la commande sed que pour la commande grep__.\\ ​
 Je ne donnerai que quelques exemples.\\ ​ Je ne donnerai que quelques exemples.\\ ​
 Il est à noter que sans l'​option -i, les exemples ne modifieront pas le fichier.\\ ​ Il est à noter que sans l'​option -i, les exemples ne modifieront pas le fichier.\\ ​
-Comme grep pour les caractères vues jusqu'​ici :+</​note>​
  
-  ​Les caractère début et fin de ligne : +En étant au niveau du répertoire : "​~/​ERetCMD/"​. 
-Par exemple, supprimer la ligne vide :+ 
 +  ​__Les caractère début et fin de ligne :__ 
 + 
 +Par exemple, ​pour supprimer la ligne vide à l'​affichage ​:
  
 <code user>sed '/^$/ d' liste1-nom</​code>​ <code user>sed '/^$/ d' liste1-nom</​code>​
  
  
-  * Le caractère étoile :+  * __Le caractère étoile :__ 
 Par exemple, substituer "​AAAAAA"​ par abc  Par exemple, substituer "​AAAAAA"​ par abc 
  
Ligne 544: Ligne 652:
   6 8 Amanda   6 8 Amanda
  
-  * Le caractère fin de mot : +  * __Le caractère fin de mot :__ 
-Par exemple, tout supprimer sauf (''​!''​)((relève du vocabulaire de sed, et n'est pas un caractère appartenant aux ER)) la ligne correspondant à un mot finissant par "​fois"​+ 
 +Par exemple, tout supprimer sauf (''​!''​)((relève du vocabulaire de sed, et n'est pas un caractère appartenant aux ER)) la ligne correspondant à un mot finissant par "​fois" ​
 <code user>sed '/​fois\>/​ !d' liste1-nom</​code>​ <code user>sed '/​fois\>/​ !d' liste1-nom</​code>​
  
Ligne 551: Ligne 661:
  
 ===Attention au sens global de la ER donné par la commande=== ===Attention au sens global de la ER donné par la commande===
 +
 Si la signification des caractère est la même, l'​action de la commande modifie "la phrase",​ ou le sens global de la //​ER//​.\\ ​ Si la signification des caractère est la même, l'​action de la commande modifie "la phrase",​ ou le sens global de la //​ER//​.\\ ​
 Comparer l'​usage des [^ ] de grep avec ce qui suit : Comparer l'​usage des [^ ] de grep avec ce qui suit :
Ligne 575: Ligne 686:
  
 ====awk et les caractères communs aux ERb et ERe ==== ====awk et les caractères communs aux ERb et ERe ====
 +
 La commande awk travail sur les colonnes, les lignes, les mots, et constitue un langage de programmation. Je ne rappellerai pas toutes les fonctions de awk mais présenterai seulement comment utiliser les //ER// pour une utilisation basique de cette commande.\\ ​ La commande awk travail sur les colonnes, les lignes, les mots, et constitue un langage de programmation. Je ne rappellerai pas toutes les fonctions de awk mais présenterai seulement comment utiliser les //ER// pour une utilisation basique de cette commande.\\ ​
 L'​usage le plus simple d'awk consiste à utiliser une //ER// pour sélectionner une chaîne.\\ ​ L'​usage le plus simple d'awk consiste à utiliser une //ER// pour sélectionner une chaîne.\\ ​
Ligne 581: Ligne 693:
 Avec awk la //ER// est encadrée par des slash ''/​ER/''​. Avec awk la //ER// est encadrée par des slash ''/​ER/''​.
  
-===L'​étoile ​===+  * __L'​étoile ​:__ 
 <code user>​echo "123 AAAAAA"​ | awk '/​A*/​{print $2}'</​code>​ <code user>​echo "123 AAAAAA"​ | awk '/​A*/​{print $2}'</​code>​
  
Ligne 620: Ligne 733:
 </​note>​ </​note>​
  
-===le caractère début de ligne (^) === +  * __Le caractère début de ligne (^) :__ 
-  * Rappel ​du fichier "​liste1-nom"​ dont la dernière ligne est vide :+ 
 +Visualisation ​du fichier "​liste1-nom"​ dont la dernière ligne est vide :
 <code user>cat liste1-nom</​code>​ <code user>cat liste1-nom</​code>​
 <​code>​ <​code>​
Ligne 655: Ligne 769:
 </​note>​ </​note>​
  
-===caractère ​fin de ligne ($) ===+  * __Caractère ​fin de ligne ($) :__ 
 <​code>​awk '$3 ~ /ce$/' liste1-nom</​code>​ <​code>​awk '$3 ~ /ce$/' liste1-nom</​code>​
  
   4 5 Béatrice   4 5 Béatrice
  
-===Caractère ​point et étoile ​===+  * __Caractères ​point et étoile ​:__ 
 <code user>awk '$3 ~ /​.d.*/'​ liste1-nom</​code>​ <code user>awk '$3 ~ /​.d.*/'​ liste1-nom</​code>​
  
Ligne 672: Ligne 788:
 </​code>​ </​code>​
  
-===Les ​crochets ​=== +  * __Les crochets ​:__ 
-<code user> + 
-awk '$3 ~/​t[h]/'​ liste1-nom</​code>​+<code user>awk '$3 ~/​t[h]/'​ liste1-nom</​code>​
  
 >Affiche la ou les lignes dont la chaîne correspond à la //ER// "​t"​ ou "​th"​ >Affiche la ou les lignes dont la chaîne correspond à la //ER// "​t"​ ou "​th"​
Ligne 681: Ligne 797:
   5 7 Dorothée   5 7 Dorothée
  
-===exclusion ​[^ ] ===+  * __Exclusion ​[^ ] :__ 
 <code user>awk '$1 ~ /​^[^12345678]/'​ liste1-nom</​code>​ <code user>awk '$1 ~ /​^[^12345678]/'​ liste1-nom</​code>​
 <​code>​ <​code>​
Ligne 702: Ligne 819:
 > La seule différence entre ''​$1 ~ /​^[^12345678]/''​ et ''​$1 !~ /​^[12345678]/'',​ c'est que la deuxième //ER// affichera une ligne vide, et non la première. > La seule différence entre ''​$1 ~ /​^[^12345678]/''​ et ''​$1 !~ /​^[12345678]/'',​ c'est que la deuxième //ER// affichera une ligne vide, et non la première.
  
-===Début ​et fin de mot===+  * __Début ​et fin de mot :__
  
 <code user>awk '$1 ~ /​fois\>/'​ liste1-nom</​code>​ <code user>awk '$1 ~ /​fois\>/'​ liste1-nom</​code>​
Ligne 710: Ligne 827:
  
 ====La commande expr n'​utilise que ERb==== ====La commande expr n'​utilise que ERb====
-===Préparation === +
-Soit le fichier "<​nowiki>​liste4-spec</​nowiki>"​ : +
-<code user>cat liste4-spec</​code>​ +
-<​code>​ +
-gdd:​a:​aa:​aaa:​aaaa:​aaaaaa:​aaaaaaaa +
-T5c Kc5 T5 c E2* abcd 7 9Abcd +
-7 1AAA.AAA.bcdef aBcd6a 123* +
-abc2356.99 +
-73000|Savoie +
-123456 +
-1234567 +
-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 +
-choses et trucs ne font pas bon ménage +
-123.3456.abc +
-trucschosetruc +
-tructructrucs +
-chosechosechose +
-</​code>​+
 ===Syntaxe === ===Syntaxe ===
  
Ligne 741: Ligne 839:
   * L'​expression rationnelle est comparée par rapport au début de la variable, le caractère **''​^''​** est toujours implicite.   * 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.   * Si une partie de l'​expression rationnelle est mémorisée avec **''​\( \)''​** la commande expr affiche dans le terminal la partie correspondante.
- 
  
 </​note>​ </​note>​
Ligne 777: Ligne 874:
 </​code>​ </​code>​
  
-> Le chiffre "​1"​ est le code de retour.+> Le chiffre "​1"​ est le code de retour ​: pas de correspondance,​ donc code d'​erreur.
  
   * sous chaîne avec caractère fin de mot :   * sous chaîne avec caractère fin de mot :
Ligne 791: Ligne 888:
 ====L'​éditeur de texte vi n'​utilise aussi que les ERb ==== ====L'​éditeur de texte vi n'​utilise aussi que les ERb ====
  
-===Préparation === +===Préparation ​du fichier "​liste4-spec" ​=== 
-<code user>cat liste4-vim</code> + 
-<code> +  * Donner le contenu suivant au fichier "​liste4-spec"​ en faisant : 
-Kc5 T5 c E2* abcd 7 9Abcd+ 
 +<code user>cd ~/ERetCMD/ && ​cat >> ​liste4-spec <<EOF 
 +gdd:​a:​aa:​aaa:​aaaa:​aaaaaa:​aaaaaaaa 
 +T5c Kc5 T5 c E2* abcd 7 9Abcd
 7 1AAA.AAA.bcdef aBcd6a 123* 7 1AAA.AAA.bcdef aBcd6a 123*
 abc2356.99 abc2356.99
 73000|Savoie 73000|Savoie
 +123456
 +1234567
 index-tel|04|Rhône-Alpe index-tel|04|Rhône-Alpe
 -15 +36 5687 {15} exemple{36} -15 +36 5687 {15} exemple{36}
 il y a un truc et un truc et encore un truc et une chose il y a un truc et un truc et encore un truc et une chose
-chose et truc ne font pas bon ménage+choses ​et trucs ne font pas bon ménage
 123.3456.abc 123.3456.abc
-trucchosetruc +trucschosetruc 
-tructructruc+tructructrucs
 chosechosechose chosechosechose
 +EOF
 </​code>​ </​code>​
  
Ligne 832: Ligne 935:
 </​note>​ </​note>​
  
-  * Éditer le fichier "​liste4-vim" ​+  * Éditer le fichier "​liste4-vim" ​en faisant ​:
-  * Pour éditer le fichier avec vi ou vim :+
  
-<code user>vi liste4-vim</​code>​+<code user>vi liste4-spec</​code>​
 ou  ou 
-<code user>vim liste4-vim</​code>​+<code user>vim liste4-spec</​code>​
  
 {{http://​pix.toile-libre.org/​upload/​original/​1407922486.png?​400}} {{http://​pix.toile-libre.org/​upload/​original/​1407922486.png?​400}}
Ligne 872: Ligne 974:
  
 ===Exemples de recherches === ===Exemples de recherches ===
-  ​le caractère début de ligne ^+ 
 +  ​__Le caractère début de ligne ^ __ 
 <​code>​ <​code>​
 /^chose /^chose
Ligne 878: Ligne 982:
 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>​+<​code>​:nohlsearch</​code>​
 Pour retirer la surbrillance de la recherche. Pour retirer la surbrillance de la recherche.
  
-  * le caractère fin de ligne $+  * __Le caractère fin de ligne $__ 
 <​code>​ <​code>​
 /chose$ /chose$
 </​code>​ </​code>​
-On valide avec entrée, et ''​nohlsearch''​ pour effacer +On valide avec entrée, et ''​:nohlsearch''​ pour effacer
- +
  
 ===Exemples de substitution=== ===Exemples de substitution===
  
-  * crochets ​:+  * __Crochets ​:__ 
 <​code>​ <​code>​
 :​s/​[Ss]/​XXX/​g :​s/​[Ss]/​XXX/​g
 </​code>​ </​code>​
 +
 >​Substitue les caractères "​S"​ ou "​s"​ à la ligne du curseur et surligne toutes les occurrences potentiellement substituables. >​Substitue les caractères "​S"​ ou "​s"​ à la ligne du curseur et surligne toutes les occurrences potentiellement substituables.
-> **''​nohlsearch''​** pour retirer la surbrillance. +> **''​: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.+>puis pour annuler la substitution "​Échap" ​(pour être sûr de ne pas être en mode insertion), puis appuyer sur la lettre "​u"​ ("​u"​ pour annuler un seul changement, ​("​U"​ pour annuler plusieurs ​changements). 
 + 
 +  * __idem sur tout le texte :__
  
-  * idem sur tout le texte : 
 <​code>​ <​code>​
 :​1,​$s/​[Ss]/​XXX/​g :​1,​$s/​[Ss]/​XXX/​g
Ligne 906: Ligne 1012:
 >"​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.
  
-  * sous-chaîne avec parenthèses et accolades :+  * __Sous-chaîne avec parenthèses et accolades :__ 
 <​code>​ <​code>​
-/​\([0-9]\{3\}.\)\{2\} +/​\([0-9]\{3\}.\)\{2\}\.</​code>​ 
-</​code>​ + 
-Vi ou vim surligne à la ligne 9 (comportant "​123.3456.abc"​) la sous-chaîne **''​123.3456.''​**.+>Vi ou vim surligne à la ligne 9 (comportant "​123.3456.abc"​) la sous-chaîne **''​123.3456.''​**.
  
  
Ligne 1215: 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 1222: 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 1245: 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 1272: 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 1280: 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 1299: 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 1307: 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 1316: 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 1327: Ligne 1436:
 </​code>​ </​code>​
  
-  * caractère ​? :+  * __Caractère ​? :__ 
 <code user>​locate --regex '/​liste.?'</​code>​ <code user>​locate --regex '/​liste.?'</​code>​
 <​code>​ <​code>​
Ligne 1346: 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 1364: Ligne 1474:
  
  
->Le fichier "​liste"​ (sans extension) n'​apparaît ​pas.+>Le fichier "​liste"​ (sans extension) n'​apparaît ​plus.
  
 =====Les classes ===== =====Les classes =====
utilisateurs/hypathie/tutos/erb-et-ere-par-le-contexte-des-commandes.txt · Dernière modification: 01/10/2023 11:39 (modification externe)

Pied de page des forums

Propulsé par FluxBB