0

我有一个崇高的文本配置文件,当我在大学和家之间移动时,我想更改包控制的代理设置。该文件具有以下结构:

{
    "installed_packages":
    [
        "AdvancedNewFile",
        "jQuery Snippets pack",
        "Nettuts+ Fetch",
        "Package Control",
        "Theme - Aqua",
        "Theme - Soda"
    ],
    "http_proxy": "ProxyA:port",
    "https_proxy": "ProxyA:port"
}

现在,我需要http_proxy用 3 个值替换变量。它可以是ProxyAProxyB""表示没有代理。我希望能够有效地使用sed. 现在假设我想将代理设置为ProxyB。然后我会检查代理是否为空或设置为 ProxyA,然后进行查找和替换。所以可能有3种情况:

  1. 当代理要设置为""时,我们需要对ProxyAProxyB做一个替换
  2. 当代理要设置为ProxyA时,我们需要对""ProxyB做一个替换
  3. 当代理要设置为ProxyB时,我们需要对""ProxyA做一个替换

我可以使用两个 sed 命令来做到这一点。实现这一目标的最有效方法是什么?我认为它可以用一个 sed 命令来完成。

4

1 回答 1

2

所以换句话说,这三个值中的哪一个都没有关系。

sed -r 's/"http(s?)_proxy": "(Proxy[AB])?"/"http\1_proxy": "ProxyA"/' inputfile

将用 替换三个可能值中的任何一个ProxyA。(当然,这意味着它也将替换ProxyA为自身,但如果您想将其全部放入单个正则表达式中,这是您需要做出的妥协。)

于 2013-10-19T08:01:05.523 回答