Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#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... smile

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 yikes c'est dingue d'utiliser une console unix sous windows cool on ne perd pas ses (bonnes) habitudes du coup!

Dernière modification par bEN (Le 26/09/2005, à 01:53)

Hors ligne