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