Sed variable

Résolu
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. Modérateur
    Rien pigé!
    Que sont sensés faire ta substitution ou ton filtre en général. Explique cela clairement.
    1. 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
      1. Modérateur
        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)
        1. 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