使用 sed 更改 OpenVPN 文件中的服务器名称

使用 sed 更改 OpenVPN 文件中的服务器名称

我有以下文件:

    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..

让我说得更清楚,这是一个 OpenVPN conf 文件。我只想替换以remote servername 5555-开头的行服务器名称另一种。

我添加了多remote servername 5555行只是为了作为示例,因为它们都代表我可能会发生的变化。

我只想匹配中间列等,fi.server.com并使用不同的名称us-newyorkcity.server.com替换它。sed

为什么这样的模式不起作用?

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

我也试过这个..

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

进一步注意,从示例来看,us-newyorkcity.server.com只有server.com部分是静态的。休息已改变。

感谢帮助!

答案1

假设一个变量NEWNAME的名称是您想要插入的,您应该能够使用以下内容:

sed -i.bak "s|^\(remote \)\([^ ]*\)\([ ]*[0-9]*\)|\1$NEWNAME\3|" filename

相关内容