|
Publicité | ||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() Inscription : juillet 2009 Messages : 1 ![]() |
Bonjour à tous, alors voilà mon problème j'ai créé une fonction qui me permet de modifier une ligne d'un fichier avec en paramètre le nom du fichier à traiter et une chaine de caractère qui va remplacer une partie de ma ligne
sed "/^DEBUT_LIGNE/s/TOTO .*$/TOTO $CHAINE/" $MON_FICHIER Donc pour un fichier exemple comme ça: erere rereproepr reopropero kreokroekrepokr ekroep rkoekr ekroekpr keropekr krpokerpoekrp kerpo eorkeporkeropekrpoTOTO chaine à remplacer efeflepf efpelf lfpelfpefl epf J'ai bien: erere rereproepr reopropero kreokroekrepokr ekroep rkoekr ekroekpr keropekr krpokerpoekrp kerpo eorkeporkeropekrpoTOTO $CHAINE efeflepf efpelf lfpelfpefl epf Le problème c'est que si dans ma variable $CHAINE j'ai par exemple "toto/tata" il va me balancer une erreur parce qu'il interprète le caractère / J'ai essayé en remplaçant "/" par "\/" mais ça ne marche pas sauf si je le met en brute dans le sed, mais vu que je passe par une variable c'est pas bon J'ai essayé en remplaçant "/" par son code ASCII : "\x2F" mais sed l'interprete comme ça : "x2F" Je suis a cours d'idée, donc si vous avez déjà eu une problème comme ça, ça m'intéresse Merci |
|
|
00
|
|
|
#2 |
|
Membre éclairé
![]() |
Bonjour,
Je sais pas si cela va marcher mais as-tu essayé de le remplacer par \\/. Je m'explique la première fois l'interpréteur va passer et va replacer le \\/ par \/ et donc en arrivant il n'y aura pas d'erreur car le \/ va etre interprété par le sed en /. A tester. Je ne suis pas sur que cela marche. A bientôt |
|
|
00
|
|
|
#3 |
![]() ![]() R&D en systemes informatiques bas niveau Unix/Linux Inscription : mai 2004 Messages : 5 129 ![]() |
Bonjour,
Tu n'es pas oblige d'utiliser le / comme separateur : Code :
sed "#^DEBUT_LIGNE#s#TOTO .*$#TOTO $CHAINE#" $MON_FICHIER |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com