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
doc:editeurs:rpl [03/05/2017 14:21]
smolski
doc:editeurs:rpl [01/12/2021 10:39] (Version actuelle)
ubub [Utilisation]
Ligne 1: Ligne 1:
-====== rpl pour rechercher et remplacer en ligne de commande ​======+====== rpl utilitaire ​de recherche/​remplacement de texte  ​======
  
-  * Objet : Utilisation de rpl pour Rechercher et Remplacer en ligne de commande+  * Objet : Utilisation de rpl pour Rechercher et Remplacer ​de façon récursive ​en ligne de commande
   * Niveau requis : {{tag>​débutant}}   * Niveau requis : {{tag>​débutant}}
   * Commentaires : //Parce que un éditeur de texte pour un fichier, c'est bien, mais en ligne de commande pour 20 fichiers, c'est mieux//   * Commentaires : //Parce que un éditeur de texte pour un fichier, c'est bien, mais en ligne de commande pour 20 fichiers, c'est mieux//
   * Débutant, à savoir : [[:​doc:​systeme:​commandes:​le_debianiste_qui_papillonne|Utiliser GNU/Linux en ligne de commande, tout commence là !.]] :-)   * Débutant, à savoir : [[:​doc:​systeme:​commandes:​le_debianiste_qui_papillonne|Utiliser GNU/Linux en ligne de commande, tout commence là !.]] :-)
-  * Suivi : {{tag>en-chantier à-tester ​à-placer}} +  * Suivi : {{tag>​à-compléter}} 
     * Création par [[user>​bendia]] 03/05/2017     * Création par [[user>​bendia]] 03/05/2017
     * Testé par bendia le 3/05/2017     * Testé par bendia le 3/05/2017
   * Commentaires sur le forum : [[https://​debian-facile.org/​viewtopic.php?​id=17752| Lien vers le forum concernant ce tuto]] ((N'​hésitez pas à y faire part de vos remarques, succès, améliorations ou échecs !))   * Commentaires sur le forum : [[https://​debian-facile.org/​viewtopic.php?​id=17752| Lien vers le forum concernant ce tuto]] ((N'​hésitez pas à y faire part de vos remarques, succès, améliorations ou échecs !))
- 
-**Nota :** 
- 
-Contributeurs,​ les FIXME sont là pour vous aider, supprimez-les une fois le problème corrigé ou le champ rempli ! 
  
 ===== Introduction ===== ===== Introduction =====
Ligne 18: Ligne 14:
 //​Rechercher//​ et //​Remplacer//,​ voilà une des fonction d'un éditeur de texte des plus utilisée. C'est super cool, je veux remplacer ''​Bob''​ par ''​Alice''​ dans mon super tuto, il n'y a qu'un fichier, facile. Mais voilà, mon tuto est découpé en 20 parties, chacune dans un fichier Il faut donc les ouvrir un par un, et lancer le remplacement. //​Rechercher//​ et //​Remplacer//,​ voilà une des fonction d'un éditeur de texte des plus utilisée. C'est super cool, je veux remplacer ''​Bob''​ par ''​Alice''​ dans mon super tuto, il n'y a qu'un fichier, facile. Mais voilà, mon tuto est découpé en 20 parties, chacune dans un fichier Il faut donc les ouvrir un par un, et lancer le remplacement.
  
-''​rpl''​ permet de faire ça en une ligne de commande, avec pas mal d'​options pour affiner un peu, comme le faire récursivement (en inspectant les sous-dossiers),​ tenir compte de la casse, ne remplacer que le mot entier, choisir l'​extension du fichier et bien d'​autres options encore.+''​rpl''​ permet de faire ça en une ligne de commande, avec pas mal d'​options pour affiner un peu, comme 
 +  * le faire récursivement (en inspectant les sous-dossiers),​ 
 +  * tenir compte de la casse, 
 +  * ne remplacer que le mot entier, 
 +  * choisir l'​extension du fichier ​ 
 +  * et bien d'​autres options encore...
  
 ===== Installation ===== ===== Installation =====
Ligne 29: Ligne 30:
 <code user>rpl [-LhiwbqvsRepfdt] [-xSUFFIX] ⟨vieille_chaine⟩ ⟨nouvelle_chaine⟩ ⟨fichier_cible ...⟩</​code>​ <code user>rpl [-LhiwbqvsRepfdt] [-xSUFFIX] ⟨vieille_chaine⟩ ⟨nouvelle_chaine⟩ ⟨fichier_cible ...⟩</​code>​
  
-Par exemple, si l'on veut remplacer ''​Bob''​ par ''​Alice''​ dans les 2 premières parties de mon tuto fictif, après s'​être ​placer ​dans le dossier contenant les fichiers à traiter+Par exemple, si l'on veut remplacer ''​Bob''​ par ''​Alice''​ dans les 2 premières parties de mon tuto fictif, après s'​être ​placé ​dans le dossier contenant les fichiers à traiter ​:
 <code user>rpl '​Bob'​ '​Alice'​ partie1.txt partie2.txt</​code>​ <code user>rpl '​Bob'​ '​Alice'​ partie1.txt partie2.txt</​code>​
  
-On peut bien sûr utiliser les caractères joker, pour traiter tous les fichiers du dossier par exemple +On peut bien sûr utiliser les caractères ​[[doc:​programmation:​shell:​regexp|joker]], pour traiter tous les fichiers du dossier par exemple ​:
 <code user>rpl '​Bob'​ '​Alice'​ *</​code>​ <code user>rpl '​Bob'​ '​Alice'​ *</​code>​
  
 ==== La récursivité avec l'​option ​ R ==== ==== La récursivité avec l'​option ​ R ====
  
-Si les fichiers à visiter ne se situe pas dans le même dossier, on peut indiquer que tous les fichiers sont à visiter +Si les fichiers à visiter ne se situe pas dans le même dossier, on peut indiquer que tous les fichiers sont à visiter ​:
 <code user>rpl -R '​Bob'​ '​Alice'​ *</​code>​ <code user>rpl -R '​Bob'​ '​Alice'​ *</​code>​
  
 ==== La simulation ==== ==== La simulation ====
  
-Pour voir le résultat sans rien toucher, l'​option ''​-s''​ ou ''​--dry-run''​ permet de voir les fichiers qui serait modifier ​si besoin+Pour voir le résultat sans rien toucher, l'​option ''​-s''​ ou ''​--dry-run''​ permet de voir les fichiers qui seraient modifiés ​si besoin
  
 ==== La casse ==== ==== La casse ====
  
-Par défaut, la commande tient compte de la casse. Pour passer outre ce comportement,​ utiliser l'​option ''​-i''​+Par défaut, la commande tient compte de la casse. ​\\ 
 +Pour passer outre ce comportement,​ utiliser l'​option ''​-i''​
  
 ==== L'​extension des fichiers ==== ==== L'​extension des fichiers ====
Ligne 58: Ligne 58:
 ==== Rechercher un mot entier ==== ==== Rechercher un mot entier ====
  
-On peut s'​assurer que le motif de recherche se limite à un mot entier avec l'​option ''​-w''​. Cela permet ainsi de remplacer ''​Bob''​ par ''​Alice''​dans notre tuto mais d'​éviter de se retrouver avec un truc du genre qui fait mauvais genre dans votre devoir de Français ;-)+On peut s'​assurer que le motif de recherche se limite à un mot entier avec l'​option ''​-w''​. Cela permet ainsi de remplacer ''​Bob''​ par ''​Alice''​dans notre tuto mais d'​éviter de se retrouver avec un truc qui fait mauvais genre dans votre devoir de Français ;-)
 <​code>​Tire la chevillette,​ et la Aliceinette cherra</​code>​ <​code>​Tire la chevillette,​ et la Aliceinette cherra</​code>​
  
-===== Pour aller plus loin =====+===== Un TP pour bien comprendre ​=====
  
-N'hésitez ​pas à consulter ​la page de manuel pour voir toutes ​les options ​<code user>man rpl</​code>​+Nous allons essayer d'illustrer l'​utilisation de rpl et quelques-une de ses options en s'​exercant sur quelques fichiers d'​exemple 
 + 
 +==== Mise en place ==== 
 + 
 +On va préparer un petit environnement d'​exemple,​ avec des fichiers aynat différentes extensions, placés dans différents dossiers. Il suffit de télécharger ce fichier et l'​executer (ou appliquer les commandes une par une) :-p 
 + 
 +<file bash TPrpl.sh>​ 
 +#!/bin/sh 
 +cd /tmp 
 +mkdir -P test/​dossier 
 +cd test 
 +echo "Bob tire la Bobinette"​ > f1.txt 
 +cp f1.txt f2.html 
 +cp f1.txt f3.tex 
 +cp f* dossier/ 
 +</​file>​ 
 + 
 +==== TP ==== 
 + 
 +<code user>rpl "​Bob"​ "​Alice"​ f1.txt</​code>​ 
 +<​code>​Replacing "​Bob"​ with "​Alice"​ (case sensitive) (partial words matched) 
 +
 +A Total of 2 matches replaced in 1 file searched. 
 +</​code>​ 
 +<code user>cat f1.txt</​code>​ 
 +<​code>​Alice tire la Aliceinette</​code>​ 
 +<code user>cat f2.html</​code>​ 
 +<​code>​Bob tire la Bobinette</​code>​ 
 +<code user>cat dossier/​f*</​code>​ 
 +<​code>​Bob tire la Bobinette 
 +Bob tire la Bobinette 
 +Bob tire la Bobinette</​code>​ 
 + 
 +Donc, on a touché uniquement à ''​f1.txt''​ (puisqu'​on l'a explicitement donné en argument). LE fichier f1.txt situé dans ''/​dossier''​ n'​a ​pas été modifié. Et on voit que toutes les occurences de ''​Bob''​ on été remplacée, même dans un mot. 
 + 
 +Remettons donc les choses comme à l'​origine <code user>rpl "​Alice"​ "​Bob"​ f1.txt</​code>​ 
 + 
 +Pour que seul le mot complet ''​Bob''​ soit remplacé, on va utiliser l'​option ''​-w''​. 
 +<code user>rpl -w "​Bob"​ "​Alice"​ f1.txt</​code>​ 
 +<​code>​Replacing "​Bob"​ with "​Alice"​ (case sensitive) (partial words matched) 
 +
 +A Total of 2 matches replaced in 1 file searched. 
 +</​code>​ 
 + 
 +</​code><​code>​Replacing "​Bob"​ with "​Alice"​ (case sensitive) (whole words only) 
 +
 +A Total of 1 matches replaced in 1 file searched. 
 +</​code>​ 
 +Et pour vérifier 
 +<code user>cat f1.txt</​code>​ 
 +<​code>​Alice tire la Bobinette</​code>​ 
 + 
 +Remplaçont à présent ''​Bob''​ par alice dans tous le dossier <code user>rpl -w "​Bob"​ "​Alice"​ *</​code><​code>​Replacing "​Bob"​ with "​Alice"​ (case sensitive) (whole words only) 
 +... 
 +A Total of 2 matches replaced in 3 files searched. 
 +</​code>​ 
 +<code user>cat f*</​code><​code>​Alice tire la Bobinette 
 +Alice tire la Bobinette 
 +Alice tire la Bobinette 
 +</​code>​ 
 + 
 +<code user>cat dossier/​f*</​code><​code>​Bob tire la Bobinette 
 +Bob tire la Bobinette 
 +Bob tire la Bobinette</​code>​ 
 + 
 +On voit donc que seul les fichiers du dossier ''​test''​ sont modifiés. Pour modifier l'​ensemble des fichiers ​de tous les dossiers, on va utiliser l'​option ''​-R''​ 
 + 
 +Corrigeons donc ce //B// majuscule 
 + 
 +<code user>​rpl ​-R "​Bobinette"​ "​bobinette"​ *</​code>​ 
 + 
 + 
 +===== Pour aller plus loin =====
  
 +N'​hésitez pas à consulter la page de manuel pour voir toutes les options
 +<code user>man rpl
  
  
doc/editeurs/rpl.1493814099.txt.gz · Dernière modification: 03/05/2017 14:21 par smolski

Pied de page des forums

Propulsé par FluxBB