Bash sed ajout de ligne et capture de groupe

Résolu
sbouli Messages postés 208 Statut Membre -  
sbouli Messages postés 208 Statut Membre -
Bonjour,

partant d'un fichier interfaces :
iface lo inet loopback
auto lo

auto eth1
iface eth1 inet static
address 68.8.75.1
netmask 255.255.255.255
up route add default gw 88.190.65.1
dns-search      promodg.com
dns-nameservers 88.191.254.60 88.191.254.70


je souhaite ajouter une ligne au dessus de up route avec :

up route add 88.190.65.1 dev eth1


j'ai donc tenté :
sed -i.bak -e '/default gw \(.*\)$/i \up route add \1 dev eth1' interfaces


malheureusement la capture ne fonctionne pas, il met 1 au lieu de l'ip ...

qu'ai-je donc raté ?

Merci d'avance !

Stéphane

1 réponse

  1. zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   6 501
     
    Salut,

    Essaie comme ça :

    $ cat plop 
    iface lo inet loopback
    auto lo
    
    auto eth1
    iface eth1 inet static
    address 68.8.75.1
    netmask 255.255.255.255
    up route add default gw 88.190.65.1
    dns-search      promodg.com
    dns-nameservers 88.191.254.60 88.191.254.70
    
    $ sed '/^up/{s/^\(up.* \)\(.*\)$/up route add \2 dev eth1\n\1\2/}' plop
    iface lo inet loopback
    auto lo
    
    auto eth1
    iface eth1 inet static
    address 68.8.75.1
    netmask 255.255.255.255
    up route add 88.190.65.1 dev eth1
    up route add default gw 88.190.65.1
    dns-search      promodg.com
    dns-nameservers 88.191.254.60 88.191.254.70
    
    $

    2
    1. sbouli Messages postés 208 Statut Membre 2
       
      merci !
      0