Re: [TECH] sed recursif
Merci à tous, ca marche !!! David On 11/8/06, Marcus Bauer <[EMAIL PROTECTED]> wrote: On Wed, 2006-11-08 at 09:08 +0100, Jean-Max Reymond wrote: > 2006/11/8, David Pintor <[EMAIL PROTECTED]>: > > Par exemple, si je fais la commande suivante: > > > > $ sed 's/toto/titi/g' index.php > index.php > > > > il me vide carrement l'index.php. Si je fais la redirection vers un autre > > fichier (index2.php, par exemple) ça se passe bien. > > > > Si quelqu'un a une piste... > > un truc du genre: > > find rep -type f | xargs fgrep chaine | while read file;do > sed -e 's///g' < $f >$f.$$ > mv $f.$$ $f > done > Autre solution: find . -name 'index.php' | xargs sed -i "s/hello/world/g" De "man sed": -i[SUFFIX], --in-place[=SUFFIX] edit files in place (makes backup if extension supplied) Si tu as des fichiers avec des noms contenant des espaces: find . -name 'un fichier.php' -print0 | xargs --null sed -i "s/hello/world/g" Linux-Azur : http://www.linux-azur.org Désinscriptions: http://www.linux-azur.org/liste.php3 Pas de message au format HTML, SVP Linux-Azur : http://www.linux-azur.org Désinscriptions: http://www.linux-azur.org/liste.php3 Pas de message au format HTML, SVP
Re: [TECH] sed recursif
David Pintor a écrit : Bonjour, J'ai une arborescence de repertoires (un site web en fait) que j'ai transferé d'une machine à une autre. Sur pas mal de pages d'accede a une base de données MySQL avec la fonction mysql_connect('...'). Puisque les parametres de connexion de cette fonction ont changé j'essaie de faire des substitutions avec sed, mais le probleme c'est que je suis obligé de rediriger ca vers un nouveau fichier. Par exemple, si je fais la commande suivante: $ sed 's/toto/titi/g' index.php > index.php il me vide carrement l'index.php. Si je fais la redirection vers un autre fichier (index2.php, par exemple) ça se passe bien. Tu devrais essayer l'option -i de sed : sed -i".bak" -e 's/toto/titi/g' index.php Jean-Claude Linux-Azur : http://www.linux-azur.org Désinscriptions: http://www.linux-azur.org/liste.php3 Pas de message au format HTML, SVP
Re: [TECH] sed recursif
On Wed, 2006-11-08 at 09:08 +0100, Jean-Max Reymond wrote: > 2006/11/8, David Pintor <[EMAIL PROTECTED]>: > > Par exemple, si je fais la commande suivante: > > > > $ sed 's/toto/titi/g' index.php > index.php > > > > il me vide carrement l'index.php. Si je fais la redirection vers un autre > > fichier (index2.php, par exemple) ça se passe bien. > > > > Si quelqu'un a une piste... > > un truc du genre: > > find rep -type f | xargs fgrep chaine | while read file;do > sed -e 's///g' < $f >$f.$$ > mv $f.$$ $f > done > Autre solution: find . -name 'index.php' | xargs sed -i "s/hello/world/g" De "man sed": -i[SUFFIX], --in-place[=SUFFIX] edit files in place (makes backup if extension supplied) Si tu as des fichiers avec des noms contenant des espaces: find . -name 'un fichier.php' -print0 | xargs --null sed -i "s/hello/world/g" Linux-Azur : http://www.linux-azur.org Désinscriptions: http://www.linux-azur.org/liste.php3 Pas de message au format HTML, SVP
Re: [TECH] sed recursif
Quoting David Pintor <[EMAIL PROTECTED]>: Par exemple, si je fais la commande suivante: $ sed 's/toto/titi/g' index.php > index.php il me vide carrement l'index.php. Si je fais la redirection vers un autre fichier (index2.php, par exemple) ça se passe bien. sed -i 's/toto/titi/g' index.php Arnaud Linux-Azur : http://www.linux-azur.org Désinscriptions: http://www.linux-azur.org/liste.php3 Pas de message au format HTML, SVP
Re: [TECH] sed recursif
2006/11/8, David Pintor <[EMAIL PROTECTED]>: Bonjour, J'ai une arborescence de repertoires (un site web en fait) que j'ai transferé d'une machine à une autre. Sur pas mal de pages d'accede a une base de données MySQL avec la fonction mysql_connect('...'). Puisque les parametres de connexion de cette fonction ont changé j'essaie de faire des substitutions avec sed, mais le probleme c'est que je suis obligé de rediriger ca vers un nouveau fichier. Par exemple, si je fais la commande suivante: $ sed 's/toto/titi/g' index.php > index.php il me vide carrement l'index.php. Si je fais la redirection vers un autre fichier (index2.php, par exemple) ça se passe bien. Mon idée c'est de faire un find avec un grep derriere sur toute l'arborescence et puis faire des substitutions avec sed, le tout dans une seule commande ou dans un petit script afin de tout remplacer d'un coup. Si quelqu'un a une piste... un truc du genre: find rep -type f | xargs fgrep chaine | while read file;do sed -e 's///g' < $f >$f.$$ mv $f.$$ $f done -- Jean-Max Reymond CKR Solutions Open Source Nice France http://www.ckr-solutions.com Linux-Azur : http://www.linux-azur.org Désinscriptions: http://www.linux-azur.org/liste.php3 Pas de message au format HTML, SVP
Re: [TECH] sed recursif
Le 8 nov. 06 à 08:56, David Pintor a écrit : Bonjour, J'ai une arborescence de repertoires (un site web en fait) que j'ai transferé d'une machine à une autre. Sur pas mal de pages d'accede a une base de données MySQL avec la fonction mysql_connect('...'). Puisque les parametres de connexion de cette fonction ont changé j'essaie de faire des substitutions avec sed, mais le probleme c'est que je suis obligé de rediriger ca vers un nouveau fichier. Par exemple, si je fais la commande suivante: $ sed 's/toto/titi/g' index.php > index.php il me vide carrement l'index.php. Si je fais la redirection vers un autre fichier (index2.php, par exemple) ça se passe bien. Mon idée c'est de faire un find avec un grep derriere sur toute l'arborescence et puis faire des substitutions avec sed, le tout dans une seule commande ou dans un petit script afin de tout remplacer d'un coup. Si quelqu'un a une piste... Avec Perl : perl -pi -e 's/.../...g' file1 file2 ... exécute la substitution sur place, sur les fichiers passés en argument. -- Sébastien Aperghis-Tramoni Close the world, txEn eht nepO. Linux-Azur : http://www.linux-azur.org Désinscriptions: http://www.linux-azur.org/liste.php3 Pas de message au format HTML, SVP
[TECH] sed recursif
Bonjour, J'ai une arborescence de repertoires (un site web en fait) que j'ai transferé d'une machine à une autre. Sur pas mal de pages d'accede a une base de données MySQL avec la fonction mysql_connect('...'). Puisque les parametres de connexion de cette fonction ont changé j'essaie de faire des substitutions avec sed, mais le probleme c'est que je suis obligé de rediriger ca vers un nouveau fichier. Par exemple, si je fais la commande suivante: $ sed 's/toto/titi/g' index.php > index.php il me vide carrement l'index.php. Si je fais la redirection vers un autre fichier (index2.php, par exemple) ça se passe bien. Mon idée c'est de faire un find avec un grep derriere sur toute l'arborescence et puis faire des substitutions avec sed, le tout dans une seule commande ou dans un petit script afin de tout remplacer d'un coup. Si quelqu'un a une piste... Merci d'avance et bonne journée, David Linux-Azur : http://www.linux-azur.org Désinscriptions: http://www.linux-azur.org/liste.php3 Pas de message au format HTML, SVP