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 [13/08/2014 08:13]
Hypathie [grep, sed, find, locate et les caractères spécifiques aux ERb]
utilisateurs:hypathie:tutos:erb-et-ere-par-le-contexte-des-commandes [13/08/2014 10:09]
Hypathie [grep, sed, find, locate et les caractères spécifiques aux ERb]
Ligne 221: Ligne 221:
 </​code>​ </​code>​
  
 +Voir ci-dessous pour l'​utilisation de grep (grep -G) avec [[utilisateurs:​hypathie:​tutos:​erb-et-ere-par-le-contexte-des-commandes?&#​grep-ou-grep-g-et-les-caracteres-specifiques-aux-erb|les caractères spécifiques aux ERb]].
 </​note>​ </​note>​
  
Ligne 350: Ligne 351:
  
 <note tip> <note tip>
-Ce qui donne :\\ +Avec find il faut toujours une option pour utiliser une //ER//.\\  
 + 
 +  * Pour une expression rationnelle basique ​:\\ 
 <​code>​ <​code>​
-find -regextype "​posix-basic"​ -regex "ERb"+find -regextype "​posix-basic"​ -regex "son-expression-rationnelle-basique"
 </​code>​ </​code>​
  
-L'​option ​-regextype posix-basic permet de définir le type de ER qu'​on ​souhaite ​utiliser.\\ ​+  * Pour une expression rationnelle étendue :\\ 
 +<​code>​ 
 +find -regextype ​"posix-extended"​ -regex "​son-expression-rationnelle-étendue"​ 
 +</​code>​  
 + 
 +  * 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). 
 + 
 +  * Il  s'agit d'une correspondance sur __le chemin complet__.\\ Pour représenter un chemin absolu quelque soit-il, il faut ajouter en début d'​expression **''​.*''​**.  
 + 
 +Je ne donnerai ici quelques exemples d'​utilisation des caractères communs aux ERb et ERe, en tant que caractères ERb, afin d'​illustrer l'​utilisation de find avec l'​option ''​-regextype "​posix-basic''​.\\ 
  
-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''​)) +Pour l'​utilisation des caractères spécifiques aux ERb avec find, voir : [[utilisateurs:​hypathie:tutos:erb-et-ere-par-le-contexte-des-commandes?&#​find-et-les-caracteres-specifiques-aux-erb|find ​et les caractères spécifiques aux ERb]]\\ ​
-  * **''​-regex ER''​** +
-  * **''​-iregex motif''​** : Semblable à -regex, pour ne pas tenir compte de la casse (ne pas 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 **''​.*'​'**. +Pour l'illustration de find avec les ERe voir :
 </​note>​ </​note>​
  
-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 409: Ligne 420:
  
 ====La commande locate et les caractères communs aux ERb et ERe==== ====La commande locate et les caractères communs aux ERb et ERe====
 +
 <note tip> <note tip>
-Pour utiliser les ERb, il faut utiliser l'​option :+Pour utiliser les //ER// avec locate, il faut dans tous les cas une option.\\  
 +Les caractères communs aux ERb et ERe, peuvent être utilisés avec l'une ou l'​autre de ces options : 
 + 
 +  * __Pour ​utiliser les ERb, il faut utiliser l'option__ : 
 + 
 +<code man locate>​ 
 +--regexp REGEXP 
 +      Search for a basic regexp REGEXP. ​ No PATTERNs ​ are  allowed ​ if 
 +      this  ​option ​ is used, but this option can be specified multiple 
 +      times. 
 +</​code>​ 
 + 
 +  * __Pour utiliser ces mêmes caractères en tant que ERe il faut utiliser l'​option__ ​: 
 +<code man locate>​ 
 +--regex 
 +       ​Interpret all PATTERNs as extended regexps 
 +</​code>​ 
 + 
 +Sans l'une ou l'​autre de ces options, locate reconnaît le caractère ''​*''​ comme un métacaractère du shell.\\  
 + 
 +=> Cela a une conséquence par rapport aux caractères ERb qui ne sont pas communs aux ERe.\\  
 +Autrement dit, si on choisit d'​utiliser les ERb, il faudra un antislash pour utiliser [[utilisateurs:​hypathie:​tutos:​erb-et-ere-par-le-contexte-des-commandes?&#​caracteres-specifiques-aux-erb|les caractères spécifiques aux ERb]] et ce sera inutile si on choisit les ERe.
  
-<​code>​--regexp</​code> ​+Voir l'​utilisation de [[utilisateurs:​hypathie:​tutos:​erb-et-ere-par-le-contexte-des-commandes?&#​locate-et-les-caracteres-specifiques-aux-erb|locate avec les caractères spécifiques aux ERb]].
  
-Sinon, locate reconnaît le caractère ''​*''​ comme un métacaractère du shell.\\ ​ 
  
-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, si 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.\\ ​
  
-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 !
Ligne 695: Ligne 727:
 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
 </​code>​ </​code>​
Ligne 956: Ligne 990:
 </​code>​ </​code>​
  
-==== grep ====+==== grep ou grep -G et les caractères spécifiques aux ERb====
  
   * les accolades avec antislash (le caractère précédent un nombre exact de fois) :   * les accolades avec antislash (le caractère précédent un nombre exact de fois) :
Ligne 1010: Ligne 1044:
 >On cherche les lignes qui comporte "​truc"​ au singulier ou au pluriel. >On cherche les lignes qui comporte "​truc"​ au singulier ou au pluriel.
  
-====sed ​sans option utilise ​les ERb ====+====sed ​et les caractères spécifiques aux ERb ==== 
 +__**Rappel**__\\  
 + 
 +Par défaut sed utilise les ERb.\\ ​
 La syntaxe est la même que pour les caractères communs aux ERe. La syntaxe est la même que pour les caractères communs aux ERe.
 +
 +===Exemples ===
  
   * Substituer "​Hello"​ par "​OK"​ :   * Substituer "​Hello"​ par "​OK"​ :
Ligne 1034: Ligne 1073:
 </​note>​ </​note>​
  
-====locate utilise ​les ERb avec l'​option --regexp ​====+====find et les caractères spécifiques aux ERb " ​==== 
 +__**Rappel **__\\ ​
  
-=== Préparation=== +Pour utiliser les ERb, il faut utiliser ​l'option ​ **''​-regextype ​"posix-basic" ​''​**.
-Dans le répertoire de l'utilisateur et dans le dosssier ​"ERetCMD/" ​:+
  
-  ​Création de trois fichiers : "image linux - 01.jpg",​ "image linux - 02.jpg"​ et "image linux - 03.jpg"​ :+__**Préparation**__\\ ​
  
-<​code ​user+Dans le répertoire de l'​utilisateur soit le répertoire "​ERetCMD/"​ contenant : 
-touch imagelinux-01.jpg imagelinux-02.jpg imagelinux-03.jpg ​+ 
 +<​code>​ 
 +Dossier  ​     img-perso-2.jpg ​ liste3-erb-ere  ​   sort1.txt 
 +essai.grep2~  ​     liste  ​      ​liste4-spec  ​   sort2.txt 
 +image linux - 01.jpg ​ ​liste1  ​      ​liste4-vim  ​   sort3.txt 
 +image linux - 02.jpg ​ ​liste1-nom ​      ​liste-class  ​   vim2.png 
 +image linux - 03.jpg ​ ​liste2  ​      ​server-0.xkb  ​   vim.png 
 +img-perso-1.jpg ​      ​liste2-nom ​      ​smolski-exo-sed.txt ​ xxx-sort.txt
 </​code>​ </​code>​
  
-  ​Visualisation ​+===Exemples === 
-<code user>ls</​code>​+  ​accolades (depuis le répertoire parent "​ERetCMD/"​ des fichiers recherchés ​
 +<code user>find -regextype "​posix-basic"​ -regex "​.*/​[a-z]\{,​3\}-.*\.jpg$"​</​code>​
 <​code>​ <​code>​
-Dossier  ​     ​img-perso-1.jpg  ​liste3-erb-ere ​ smolski-exo-sed.txt +./img-perso-2.jpg 
-essai.grep2~  ​     ​img-perso-2.jpg  ​liste4-spec ​    ​sort1.txt +./img-perso-1.jpg
-image linux - 01.jpg ​ liste1-nom ​      ​liste4-spec~ ​   sort2.txt +
-image linux - 02.jpg ​ liste1-nom~ ​     liste4-vim ​     sort3.txt +
-image linux - 03.jpg ​ liste2-nom ​      ​server-0.xkb ​   xxx-sort.txt+
 </​code>​ </​code>​
  
-  * Mise à jour de la base de donnée :+  * caractère \? : 
 +<code user>​find -regextype "​posix-basic"​ -regex "​.*/​liste.\?"</​code>​ 
 +<​code>​ 
 +./​ERetCMD/​liste1 
 +./​ERetCMD/​liste 
 +./​ERetCMD/​liste2 
 +</​code>​ 
 + 
 +  * le caractère \+ (depuis le répertoire parent "​ERetCMD/"​ des fichiers) :  
 +<code user>​find -regextype "​posix-basic"​ -regex "​.*/​liste.\+"</​code>​ 
 +<​code>​ 
 +./​liste2-nom 
 +./​liste1-nom 
 +./​liste3-erb-ere 
 +./​liste4-vim 
 +./liste1 
 +./​liste4-spec 
 +./liste2 
 +./​liste-class 
 +</​code>​ 
 + 
 +====locate et les caractères spécifiques aux ERb ==== 
 +__**Rappel**__\\  
 + 
 +Pour utiliser les ERb, il faut utiliser l'​option **''​--regexp''​**.\\ 
 + 
 +Soit encore le répertoire "​ERetCMD/"​ contenant les mêmes fichiers (voir find).\\  
 + 
 +Mise à jour de la base de donnée, si besoin ​:
 <code root> <code root>
 updatedb updatedb
 </​code>​ </​code>​
  
-===Exemple ​=== +===Exemples ​=== 
-<code user>​locate --regexp '.*\([a-z]\{1,​\} \)\{2\}.*\.jpg$'</​code>​+  * 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>​ <​code>​
 /​home/​Téléchargements/​Les utilitaires awk, nawk et gawk - Tutoriel_fichiers/​logo.jpg /​home/​Téléchargements/​Les utilitaires awk, nawk et gawk - Tutoriel_fichiers/​logo.jpg
Ligne 1069: Ligne 1143:
 </​code>​ </​code>​
  
 +  * caractère \? :
 +<code user>​locate --regexp '/​liste.\?'</​code>​
 +<​code>​
 +/​home/​hypathie/​Documents/​PYTHON/​python2/​chap06/​liste_et_branch.py
 +/​home/​hypathie/​Documents/​PYTHON/​python3/​chap06/​liste_et_branch.py
 +/​home/​hypathie/​ERetCMD/​liste
 +/​home/​hypathie/​ERetCMD/​liste-class
 +/​home/​hypathie/​ERetCMD/​liste1
 +/​home/​hypathie/​ERetCMD/​liste1-nom
 +/​home/​hypathie/​ERetCMD/​liste2
 +/​home/​hypathie/​ERetCMD/​liste2-nom
 +/​home/​hypathie/​ERetCMD/​liste3-erb-ere
 +/​home/​hypathie/​ERetCMD/​liste4-spec
 +/​home/​hypathie/​ERetCMD/​liste4-vim
 +/​usr/​share/​man/​man2/​listen.2.gz
 +</​code>​
  
 +>Le fichier "​liste"​ (sans extension) apparaît.
  
-====find utilise les ERb avec l'​option -regextype "​posix-basic"​ ====+  * caractère \+ :
  
-===Préparation=== +<code user>​locate --regexp ​'/liste.\+'</​code>​ 
-Dans le répertoire de l'utilisateur et dans le dossier "​ERetCMD/" +<​code>​ 
- +/​home/​hypathie/​Documents/​PYTHON/​python2/​chap06/​liste_et_branch.py 
-  * Création de deux fichiers, "​img-perso-1.jpg" et "img-perso-2.jpg" : +/​home/​hypathie/​Documents/​PYTHON/​python3/​chap06/​liste_et_branch.py 
- +/​home/​hypathie/​ERetCMD/​liste-class 
-<code user> +/​home/​hypathie/​ERetCMD/​liste1 
-touch img-perso-1.jpg img-perso-2.jpg+/​home/​hypathie/​ERetCMD/​liste1-nom 
 +/​home/​hypathie/​ERetCMD/​liste2 
 +/​home/​hypathie/​ERetCMD/​liste2-nom 
 +/​home/​hypathie/​ERetCMD/​liste3-erb-ere 
 +/​home/​hypathie/​ERetCMD/​liste4-spec 
 +/​home/​hypathie/​ERetCMD/​liste4-vim 
 +/​usr/​share/​man/​man2/​listen.2.gz
 </​code>​ </​code>​
  
-===exemples === 
  
-<code user>find -regextype ​"posix-basic"​ -regex ​".*/​[a-z]\{,​3\}-.*\.jpg$"</​code>​ +>Le fichier ​"liste" ​(sans extension) n'​apparaît pas.
-<​code>​ +
-./​img-perso-2.jpg +
-./​img-perso-1.jpg +
-</​code>​+
  
 =====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