[bash] Remplacer un path dans un fichier par autre chose

Remplacer un path dans un fichier par autre chose [bash] - Codes et scripts - Linux et OS Alternatifs

Marsh Posté le 07-04-2009 à 23:39:16    

Je pensais utiliser sed (jamais utilise encore) mais... ca plante et je ne sais pas trop quoi faire.
 
Je souhaite remplacer dans un fichier les occurences de plusieurs path. Exemple:
 
/export/tmp/srcDW/WHATEVER/trunk/SW/wfsoftware
par .
 
/export/tmp/srcDW/WHATEVER/trunk/SW/WIC_jtag_emu/
par src
 
et quelques autres.
 
J'ai ca (pour commencer, je pensais les faire tous un par un)
sed -i 's/\/export\/tmp\/srcDW\/WHATEVER\/trunk\/cell\/\sw/ '  "$DIR_PACKAGE"/src/Makefile.in
 
Mais ca plante : sed: -e expression #1, char 54: unterminated `s' command
 
J'ai teste remplacer par les singl quotes, double quotes... j'ai pas trouve la bonne configuration.
 
Avez vous un pointeur ou une solution ? Merci !


---------------
Un blog qu'il est bien
Reply

Marsh Posté le 07-04-2009 à 23:39:16   

Reply

Marsh Posté le 08-04-2009 à 00:24:16    

Pour quoi y-a-t'il un antislash devant le dernier "s" ?

Citation :

sed -i 's/\/export\/tmp\/srcDW\/WHATEVER\/trunk\/cell\/\sw/ '  "$DIR_PACKAGE"/src/Makefile.in


Et tu n'indique pas par quoi remplacer. Si j'ai bien compris comme ça cela devrait marcher :

Citation :

sed -i 's/\/export\/tmp\/srcDW\/WHATEVER\/trunk\/cell\/sw/\./ '  "$DIR_PACKAGE"/src/Makefile.in


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

Marsh Posté le 08-04-2009 à 11:25:44    

Pourquoi utiliser le / comme caractère de séparation dans l'expression sed, alors qu'il y a déja plein de / partout ?
C'est plus lisible en utilisant un autre caractère, par exemple avec ce caractère §:

Citation :

sed -i 's§/export/tmp/srcDW/WHATEVER/trunk/SW/wfsoftware§.§'  "$DIR_PACKAGE"/src/Makefile.in

Reply

Marsh Posté le 08-04-2009 à 16:06:11    

Ca fonctionne tres bien (j'ai utilise la proposition de twocats parce que j'etais faineant, sa solution est proche de celle que j'utilisais. En fait c'est mon \./ qui manquait au bout (plus un typo)
 
J'ai tous mes sed qui marchent  :D j'apprend a m'en servir, mais merci beaucoup !


---------------
Un blog qu'il est bien
Reply

Sujets relatifs:

Leave a Replay

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