Altera o nome do servidor no arquivo OpenVPN com sed

3

Eu tenho o seguinte arquivo:

    proto udp
    resolv-retry infinite
    nobind

    #Single line of those bellow, I've added multiple for variations of it 
    remote fi.server.com 50505
    remote us-cityone.server.com 5050
    remote uk-citytwo.server.com 50500
    remote us-citythree.server.com  56546
    remote sweden.server.com 6546546
    rest of config file..

Deixe-me ser mais claro, este é um arquivo conf do OpenVPN. Quero substituir apenas essa linha que começa com remote servername 5555 - nome do servidor diferente.

Adicionei várias linhas remote servername 5555 apenas para um exemplo, porque todas elas representam variações que eu poderia ocorrer.

Eu quero corresponder apenas à coluna do meio, fi.server.com , us-newyorkcity.server.com etc e substituí-lo usando sed com nome diferente.

Por que padrão assim, não funciona?

sed -i.bak 's/\w+(-|\.)\.?\w+\.?\.com/g' filename

Eu também tentei este aqui ..

sed -i.bak 's/\w+(-|\.)\.?\w+\.?\.\w+/g' filename

Além disso, observe que o exemplo us-newyorkcity.server.com only server.com part é estático. O descanso é alterado.

Obrigado pela ajuda!

    
por fugitive 09.02.2017 / 04:14

1 resposta

2

Supondo uma variável NEWNAME com o nome que você deseja inserir, você deve poder usar o seguinte:

sed -i.bak "s|^\(remote \)\([^ ]*\)\([ ]*[0-9]*\)|$NEWNAME|" filename
    
por 09.02.2017 / 05:51