Sed et carractere '

Résolu/Fermé
Abraham - 18 mars 2007 à 15:34
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 - 18 mars 2007 à 22:47
Bonjour a tous,

J'ai un probleme avec la substitution de carractere sed. Je serais tres reconnaissant a tous ceux qui voudront bien consacrer un peu de leur temps pour eclairer ma lanterne.

Départ un fichier ls.txt contenant ceci (une arborescence avec des fichiers *.swf, issus d'un site aspiré).
Afin de pouvoir traiter automatiquement ce gigantesque bazar dont on a ici qu'
une petite partie en vue de test j'aimerais proteger tous les caracteres sepciaux suceptibles
de me generer une erreur. J'arrive a proteger les espaces par \ et j'aimerais faire de meme pour '.
Et c'est la que ca coince.

./Creux/Oscillateur Harmonique/animation-oscillateur-harmonique_fichiers/oscillateur-harmonique.swf
./Creux/Oscillateur Harmonique/l'oscillateur harmonique/oscillateur-harmonique.swf

sed 's/\ /\\\ /g' ls.txt

./Creux/a/PrincipeDeLAlternateur.swf
./Creux/b/Fourrier/fourier1_fichiers/fourier.swf
./Creux/b/archi_ordi.swf
./Creux/Oscillateur\ Harmonique/animation-oscillateur-harmonique_fichiers/oscillateur-harmonique.swf
./Creux/Oscillateur\ Harmonique/l'oscillateur\ harmonique/oscillateur-harmonique.swf

sed -e "s/'/_/g" ls.txt

./Creux/Oscillateur Harmonique/animation-oscillateur-harmonique_fichiers/oscillateur-harmonique.swf
./Creux/Oscillateur Harmonique/l_oscillateur harmonique/oscillateur-harmonique.swf[nicolas@localhost Filtre-swf]$ sed -e "s/'/_/g" ls.txt

en effet si je tape la commande sed -e "s/'/\\'/g" ls.txt cela ne marche pas.
je desirerais avoir une sortie ./Creux/Oscillateur\ Harmonique/l\'oscillateur\ harmonique/oscillateur-harmonique.swf
or j'ai ceci

./Creux/Oscillateur Harmonique/animation-oscillateur-harmonique_fichiers/oscillateur-harmonique.swf
./Creux/Oscillateur Harmonique/l'oscillateur harmonique/oscillateur-harmonique.swf

Si quelqu'un avait une idée et/ou une explication je lui en serais tres reconnaissant
En vous remerciant d'avance

Abraham

4 réponses

jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 897
18 mars 2007 à 16:13
Salut,

Essaie comme ça :
[jp@MDK tmpfs]$ echo $var
./Creux/Oscillateur\ Harmonique/l'oscillateur\ harmonique/oscillateur-harmonique.swf

[jp@MDK tmpfs]$ A="\\\'"
[jp@MDK tmpfs]$ echo $A
\\'

[jp@MDK tmpfs]$ echo $var | sed "s/'/"$A"/"
./Creux/Oscillateur\ Harmonique/l\'oscillateur\ harmonique/oscillateur-harmonique.swf

[jp@MDK tmpfs]$
;-)
0
Merci j'essaye ça...
Je te tiens au courant.
Encore merci
Abraham
0
Mille merci, ca faisait un temps fou que je bloquais sur ce probleme,
Ca marche nickel, y a plus ka s'attaquer a la suite ;-).
Abraham
0
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 897
18 mars 2007 à 22:47
De rien ;-))

En me penchant un peu plus sur le problème, il semblerait que cette solution marche bien aussi (sans avoir recours à une variable) :
[jp@MDK tmpfs]$ echo $var
./Creux/Oscillateur\ Harmonique/l'oscillateur\ harmonique/oscillateur-harmonique.swf

[jp@MDK tmpfs]$ echo $var | sed "s/'/\\\'/"
./Creux/Oscillateur\ Harmonique/l\'oscillateur\ harmonique/oscillateur-harmonique.swf

[jp@MDK tmpfs]$ 
;-))
0