Sed et carractere '

Résolu
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
Configuration: Linux
Mandriva 2007
Firefox 2.0.0.2
shell = /bin/bash
Bash version = 3.1.17(2)-release

4 réponses

  1. Modérateur
    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]$
    ;-)
    1. Merci j'essaye ça...
      Je te tiens au courant.
      Encore merci
      Abraham
      1. 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
        1. Modérateur
          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]$ 
          ;-))