Re: [TECH] sed recursif

2006-11-08 Par sujet David Pintor

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

2006-11-08 Par sujet Jean-Claude REPETTO

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

2006-11-08 Par sujet Marcus Bauer
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

2006-11-08 Par sujet Arnaud Boulan

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-08 Par sujet Jean-Max Reymond

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

2006-11-08 Par sujet Sébastien Aperghis-Tramoni

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

2006-11-08 Par sujet David Pintor

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