Remplacer chaine (un peu complexe) par une autre

Remplacer chaine (un peu complexe) par une autre - Codes et scripts - Linux et OS Alternatifs

Marsh Posté le 19-02-2010 à 14:21:39    

Hello,
 
dans un fichier, je voudrais remplacer :  
 
/* #include "xxdb.h" */
 
par :
 
/* #include "xxdb.h" */  
#include <ldapdb.h>

 
Pour ce faire, j'ai essayé ceci :
 
sed -e "s/\\/* #include "xxdb.h" *\//\\/* #include "xxdb.h" *\/ #include <ldapdb.h>/g" /usr/src/bind9-9.6.1.dfsg.P3/bin/named/main.c > /usr/src/bind9-9.6.1.dfsg.P3/bin/named/main.c.tmp && mv -f /usr/src/bind9-9.6.1.dfsg.P3/bin/named/main.c.tmp /usr/src/bind9-9.6.1.dfsg.P3/bin/named/main.c
 
Mais ça ne change rien.. Pas de message d'erreur, c'est juste que mon fichier n'est pas changé.
 
quelqu'un aurait une idée ?

Reply

Marsh Posté le 19-02-2010 à 14:21:39   

Reply

Marsh Posté le 19-02-2010 à 14:33:40    

man sed, option "-i" :jap:
 
de rien :o


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

Marsh Posté le 19-02-2010 à 14:45:16    

Merci, mais à vrai dire le retour à la ligne n'est pas mon plus gros problème... ce qui m'embête surtout c'est de lui faire reconnaitre tous les caractères spéciaux là.

Reply

Marsh Posté le 19-02-2010 à 14:50:58    

retour à la ligne ? [:petrus dei]
 
l'option -i permet de faire de la modification "live" sur le fichier que tu passes à sed, sans utiliser de fichier intermédiaire ... j'ai même pas regardé ce que tu cherchais à modifier :o
 
le sed -e "truc" fichier1 > fichier 2 && mv fichier2 fichier1 c'est quand même particulièrement crade :o


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

Marsh Posté le 19-02-2010 à 15:41:08    

wedgeant a écrit :

retour à la ligne ? [:petrus dei]
 
l'option -i permet de faire de la modification "live" sur le fichier que tu passes à sed, sans utiliser de fichier intermédiaire ... j'ai même pas regardé ce que tu cherchais à modifier :o
 
le sed -e "truc" fichier1 > fichier 2 && mv fichier2 fichier1 c'est quand même particulièrement crade :o


 
t'as tout à fait raison, je pige pas trop où j'avais la tête..
 
Bon, j'ai trouvé un début de réponse :
 
sed -e "s/\\/\* \#include \"xxdb.h\" \*\//\\/\* \#include \"xxdb.h\" \*\/ \#include \<ldapdb.h\> /g" /usr/src/bind9-9.6.1.dfsg.P3/bin/named/main.c
 
Ca fait ce que je veux, mais sur une ligne.. je voudrais avoir mon include à la ligne suivante. Déjà que le truc avant je sais pas comment je me suis débrouillé pour le pondre..

Reply

Marsh Posté le 19-02-2010 à 16:38:23    

bonjour
 
utilise \n pour newline je crois.  
(astuce pour vim: tu tapes ctrl+v  Entrée   et tu as le code que tu veux pour l'expression régulière)
 
Donc  sed -e "s/\(\/\* #include \"xxdb.h\" \*\/\)/\1\n#include \<ldapdb.h\>/"  etc....

Reply

Sujets relatifs:

Leave a Replay

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