Sed variable

Résolu
eric0279 Messages postés 3 Statut Membre -  
eric0279 Messages postés 3 Statut Membre -
Bonjour,

j'ai une variable: WEB="/var/www"

seulement avec sed, il ne modifie pas le fichier après multiples tentatives, soit une erreur de regex soit aucune erreur mais rien dans le fichier...

Ligne d'origine:
sed -i "s/#htmldir[[:blank:]]\/var\/cache\/munin\/www/htmldir \/var\/www\/munin/g;" /etc/munin/munin.conf


J'ai essayé avec des substitutions :, % mais aucun effet... quel est mon erreur vu que ça ne fonctionne pas ?

edit: ce n'est pas très propre mais pour le moment j'efface la ligne et je l'insère:
sed -i '9d' /etc/munin/munin.conf && sed -i "9ihtmldir $WEB\/munin" /etc/munin/munin.conf


Cordialement,

5 réponses

  1. jisisv Messages postés 3678 Statut Modérateur 936
     
    Rien pigé!
    Que sont sensés faire ta substitution ou ton filtre en général. Explique cela clairement.
    0
  2. eric0279 Messages postés 3 Statut Membre
     
    Je voudrais passer
    \/var\/www\/munin/
    en variable dans cette ligne:
    sed -i "s/#htmldir[[:blank:]]\/var\/cache\/munin\/www/htmldir \/var\/www\/munin/g;" /etc/munin/munin.conf
    0
  3. jisisv Messages postés 3678 Statut Modérateur 936
     
    Inspire-toi de ceci peut-être:
    johand@bata:~/tmp$ cat brol.txt 
    /plop/var/cache/apt
    /plop/var/cache/apt/pkgcache.bin
    /plop/var/cache/apt/apt-file
    /plop/var/cache/apt/archives
    /plop/var/cache/apt/srcpkgcache.bin
    johand@bata:~/tmp$ REP='/var/'
    johand@bata:~/tmp$ sed -e "s#${REP}#/NOUVEAU/#g" brol.txt
    /plop/NOUVEAU/cache/apt
    /plop/NOUVEAU/cache/apt/pkgcache.bin
    /plop/NOUVEAU/cache/apt/apt-file
    /plop/NOUVEAU/cache/apt/archives
    /plop/NOUVEAU/cache/apt/srcpkgcache.bin


    Notons l'utilisation des guillemets doubles afin de permettre l'évaluation de ${REP} par le shell.

    Gates gave ^W  sold  you the windows.
    GNU gave us the whole house.(Alexandrin)
    0
  4. UnGars
     
    Salut,
    edit: ce n'est pas très propre mais pour le moment j'efface la ligne et je l'insère:
    sed -i '9d' /etc/munin/munin.conf && sed -i "9ihtmldir $WEB\/munin" /etc/munin/munin.conf
    Alors dans ce cas au lieu de "i" (insertion), utiliser "c" (changement) :

    $ cat fich
    #htmldir /var/cache/munin/www
    #htmldir  /var/cache/munin/www
    #htmldir   /var/cache/munin/www
    #htmldir     /var/cache/munin/www
    
    $ var="/var/www/munin/"
    
    $ sed "3chtmldir ${var}" fich
    #htmldir /var/cache/munin/www
    #htmldir  /var/cache/munin/www
    htmldir /var/www/munin/
    #htmldir     /var/cache/munin/www
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. eric0279 Messages postés 3 Statut Membre
     
    Merci UnGars, ça fonctionne et c'était devant moi...
    0