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 | ||
doc:editeurs:rpl [03/05/2017 14:14] smolski [Pour aller plus loin] |
doc:editeurs:rpl [03/05/2017 16:18] bendia [Un TP pour bien comprendre] |
||
---|---|---|---|
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> | ||
Ligne 48: | Ligne 47: | ||
==== 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 ==== | ||
- | Pour spécifier une extension, on utilise l'option ''-x'', qui peut être spécifiée plusieurs fois. | + | Pour spécifier une extension, on ajoute l'option ''-x'', qui peut être spécifiée plusieurs fois. \\ |
+ | Si tu veux filtrer pour plusieurs extensions ça fonctionne genre pour ne remplacer que dans les fichier txt et html | ||
+ | <code user>rpl -R -x'txt' -x'html' 'Bob' 'Alice' *</code> | ||
==== 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 met son bob et 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 | ||
+ | cat f1.txt | ||
+ | cat dossier/f1.txt</code> | ||
+ | <code>Alice met son bob et tire la bobinette | ||
+ | Bob met son bob et tire la bobinette</code> | ||
+ | |||
===== Pour aller plus loin ===== | ===== Pour aller plus loin ===== | ||
- | N'hésitez pas à consulter la page de manuel pour voir toutes les options <code user>man rpl</code> | + | N'hésitez pas à consulter la page de manuel pour voir toutes les options |
+ | <code user>man rpl</code> | ||