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
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!
Tags grep awk sed regular-expression