Pages : 1
#1 Le 25/09/2005, à 23:52
- bEN
[besoin d'aide] chercher/remplacer via console
Hello... j'aurai besoin d'un petit coup de main pour une ligne de commande...
Je dois remplacer un mot par un autre dans une série de fichiers html;
J'aimerais éviter de faire des "chercher/remplacer" manuellement.. et profiter de la puissance Un*x.
exemple: j'ai un dossier avec 30 fichiers html, je dois remplacer une url dans le code source "<a href="ftp://ftp2.domaine.be/dossier/" par "<a href="/dossier/"
avec grep j'ai déjà réussi à lister tous les fichiers qui contiennent la première expression (génial grep!, jamais vu un truc aussi rapide...), et maintenant comment je fais pour y remplacer le mot? je pense que je dois utiliser la commande sed (?), mais je cale un peu... surtout qu'il s'agit de plusieurs fichiers en sortie...
Si quelqu'un est à l'aise avec tout ça... ou bien un ptit lien vers un tuto.. merci beaucoup, ça m'aiderait!
Hors ligne
#2 Le 26/09/2005, à 00:03
- Dagg
Re : [besoin d'aide] chercher/remplacer via console
>... ou bien un ptit lien vers un tuto..
Un tuto, avec Perl
http://www.debian-administration.org/articles/197
ceci n'est pas une signature.
Hors ligne
#3 Le 26/09/2005, à 01:42
- bEN
Re : [besoin d'aide] chercher/remplacer via console
Excellent, merci.
Finalement, j'ai utilisé la méthode "simple", sans passer par Perl :
$ sed -i.bak 's/ftp:\/\/ftp2.domaine.be\/dossier/newdossier/gi' *.html
et même mieux, avec "|" au lieu du "\" devant les caractères spéciaux ("?",".","*","/")
(comme suggéré sur le lien + haut, ce qui est plus facile pour les liens type "Web" avec plein de "/" partout):
$ sed -i.bak 's|ftp://ftp2.domaine.be/dossier|newdossier|gi' *.html
quelqu'un écrvait aussi cette commande pour le faire de manière récursive (je n'ai pas essayé):
$ find -type f -name \*.html -exec sed -i.bak 's|ftp://ftp2.domaine.be/dossier|newdossier|gi' {} \;
... Et voilà, 54 fichiers édités en 2 secondes... avec un Chercher/Remplacer impeccable...
Je cherchais à réaliser ce genre de manip également sous Windows, et grâce à Cygwin c'est trop facile c'est dingue d'utiliser une console unix sous windows on ne perd pas ses (bonnes) habitudes du coup!
Dernière modification par bEN (Le 26/09/2005, à 01:53)
Hors ligne
Pages : 1