Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2807 connectés 

  FORUM HardWare.fr
  Linux et OS Alternatifs
  Codes et scripts

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

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

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

n°1138007
bakastef
Posté le 26-05-2009 à 17:59:40  profilanswer
 

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)
mood
Publicité
Posté le 26-05-2009 à 17:59:40  profilanswer
 

n°1138200
twocats
Posté le 27-05-2009 à 00:47:33  profilanswer
 

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


---------------
La réponse est 42
n°1138578
sputnick
bip...bip...bip...bip...bi...b
Posté le 28-05-2009 à 01:28:41  profilanswer
 

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

n°1138984
Taz
bisounours-codeur
Posté le 29-05-2009 à 12:04:24  profilanswer
 

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.

n°1138990
wedgeant
Da penguin inside
Posté le 29-05-2009 à 12:25:44  profilanswer
 

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


---------------
Wedge#2487 @HS -#- PW: +∞ -#- Khaz-Modan/Boltiz @WoW
n°1139003
Taz
bisounours-codeur
Posté le 29-05-2009 à 14:04:25  profilanswer
 

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
n°1139009
wedgeant
Da penguin inside
Posté le 29-05-2009 à 14:07:20  profilanswer
 

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
n°1139015
Taz
bisounours-codeur
Posté le 29-05-2009 à 14:11:02  profilanswer
 

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


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Linux et OS Alternatifs
  Codes et scripts

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

 

Sujets relatifs
[BASH] Utiliser le contenu d'une variable pour créer une variable?Boucle en bash
rechercher la chaine de caractère $(function() { dans un fichierRemplacer lilo par grub quand on a du raid5 et du lvm
extraire des infos d'une fichier xml (en perl)[bash] Remplacer un path dans un fichier par autre chose
remplacer rapidement des mots d'un fichier par ceux d'un autre fichier[Make + Bash] @%$# de parentheses :)
[AIDE][Centos] Installer nmap-cgi (pb de lib perl) 
Plus de sujets relatifs à : [bash] remplacer une chaine sed, perl ...


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR