[bash] remplacer une chaine sed, perl ...

remplacer une chaine sed, perl ... [bash] - Codes et scripts - Linux et OS Alternatifs

Marsh Posté le 26-05-2009 à 17:59:40    

Salut les gens  :bounce:  :hello:  
 
J'essaie d'éditer, avec un script sh sous debian etch 4, un fichier d'alias apache (.conf), suite au déplacement d'un site dans l'arborescence.
J'ai essayer des dizaines de solutions, mais rien ne semble fonctionnner.
Mon but, remplacer dans le fichier de conf "/AncienRpertoire/" par "/nouveauRepertoire/"  
 
Note:$1 nom du fichier conf
 
 
1/

Code :
  1. sudo perl -p -i -e 's/\/$DirSrc\//\/$DirDest\//gi' /etc/apache2/sites-available/$1.conf


Qd j'execute ça dans la console, ça fonctionne parfaitement, j'ai fait des echo de cette ligne dans mon script ca donne des truc du genre:
 

Code :
  1. perl -p -i -e 's/\/betatesters\//\/alpha\//gi' /etc/apache2/sites-available/betatest.conf


 
Mais  qd je lance en root le script .sh qui fait ça... il ne se passe rien, le fichier n'est pas modifié
 
 
2/

Code :
  1. sudo sed -e 's/\/$sPlateformDirSrc\//\/$sPlateformDirDest\//g' /etc/apache2/sites-available/$1.conf


Ca m'affiche le résultat en cosole... j'ai bien esssayer de rajouter >/etc/apache2/sites-available/$1.conf, voir meme de passer par un ficher temporaire, mais ça me donne des fichiers .conf vide.
 
 
 
Le meilleur résultat que j'ai obtenu est celui-ci:  

Code :
  1. sText=`cat /etc/apache2/sites-available/$1.conf`
  2. #echo ${sText//$sPlateformDirSrc/$sPlateformDirDest} > /etc/apache2/sites-available/$1.conf
  3. #cat /etc/apache2/sites-available/$1.conf


 
mais je perds les sauts de ligne, et apache m'indique bien évidemment que le fichier n'est pas correct.
 
 
 
Quelqu'un pourrait me donner un coup de main plz  :D  
Merci d'avance. :p


Message édité par bakastef le 26-05-2009 à 18:20:49

---------------
triste époque ou il est plus difficile de casser un préjugé qu'un atome(A.Einstein)
Reply

Marsh Posté le 26-05-2009 à 17:59:40   

Reply

Marsh Posté le 27-05-2009 à 00:47:33    

Code :
  1. sudo sed -i 's/\/$sPlateformDirSrc\//\/$sPlateformDirDest\//g' /etc/apache2/sites-available/$1.conf


---------------
La réponse est 42
Reply

Marsh Posté le 28-05-2009 à 01:28:41    

Jesus, ça c'est de la séparation d'éléments optimisé ^^)
 

Code :
  1. sed -i 's@/OLD@/NEW@g' /etc/apache2/sites-available/barnabé.conf*


 
Sinon dans vi(m) :

Code :
  1. :%s@/OLD@/NEW@g

Reply

Marsh Posté le 29-05-2009 à 12:04:24    

A propos du -i, j'en suis un peu revenu sur les versions de perl que j'utilise (5.6 ...) parce que si la cible n'est pas un fichier régulier, genre un lien, ça ne le conserve pas.

Reply

Marsh Posté le 29-05-2009 à 12:25:44    

-ibak ... comme ça t'as une sauvegarde du fichier d'origine suffixé .bak :spamafote:


---------------
Wedge#2487 @HS -#- PW: +∞ -#- Khaz-Modan/Boltiz @WoW
Reply

Marsh Posté le 29-05-2009 à 14:04:25    

wedgeant a écrit :

-ibak ... comme ça t'as une sauvegarde du fichier d'origine suffixé .bak :spamafote:


Ouais ben essaie donc de le faire sur un lien ...

 
Code :
  1. $ echo toto > toto
  2. $ ln -s toto lien_toto
  3. $ ls -la *toto*
  4. lrwxrwxrwx 1 l0247308 EP 4 mai 29 14:03 lien_toto -> toto
  5. -rw-r--r-- 1 l0247308 EP 5 mai 29 14:02 toto
  6. $ perl -i.bak -pe 's/o/a/g' lien_toto
  7. $ ls -la *toto*
  8. -rw-r--r-- 1 l0247308 EP 5 mai 29 14:03 lien_toto
  9. lrwxrwxrwx 1 l0247308 EP 4 mai 29 14:03 lien_toto.bak -> toto
  10. -rw-r--r-- 1 l0247308 EP 5 mai 29 14:02 toto
 

perl 5.8.8


Message édité par Taz le 29-05-2009 à 14:10:32
Reply

Marsh Posté le 29-05-2009 à 14:07:20    

ah maÿrde [:transparency]
et y'a pas une option "follow" ou qqch comme ça ? [:petrus dei]


---------------
Wedge#2487 @HS -#- PW: +∞ -#- Khaz-Modan/Boltiz @WoW
Reply

Marsh Posté le 29-05-2009 à 14:11:02    

Pas trouvé. J'ai eu l'air coquin l'autre jour quand j'ai passé un script sur un tas de serveur pour modifier un truc dans /etc qui était en fait un lien ...

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed