Sed et carractere '

Résolu
Abraham -  
jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   -
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. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    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
  2. Abraham
     
    Merci j'essaye ça...
    Je te tiens au courant.
    Encore merci
    Abraham
    0
  3. Abraham
     
    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
  4. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    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