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 | ||
doc:editeurs:rpl [03/05/2017 14:42] bendia [rpl utilitaire de recherche/remplacement de texterécursif intelligent] |
doc:editeurs:rpl [01/12/2021 10:39] (Version actuelle) ubub [Utilisation] |
||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
- | ====== rpl utilitaire de recherche/remplacement de texte récursif intelligent ====== | + | ====== 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// | ||
Ligne 43: | Ligne 43: | ||
==== 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 ==== | ||
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> | ||
+ | |||
+ | ===== Un TP pour bien comprendre ===== | ||
+ | |||
+ | 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 ===== | ===== Pour aller plus loin ===== | ||
N'hésitez pas à consulter la page de manuel pour voir toutes les options | N'hésitez pas à consulter la page de manuel pour voir toutes les options | ||
- | <code user>man rpl</code> | + | <code user>man rpl |