使用sed有效查找和替换文件中的字符串

歼灭者8080

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

{
    "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个值。它可以是代理AProxyB“”为没有代理。我希望能够使用来有效地做到这一点sed现在假设我要将代理设置为ProxyB然后,我将检查代理是否为空或设置为ProxyA,然后进行查找和替换。因此可能有3种情况:

  1. 将proxy设置为“”时,我们需要替换ProxyAProxyB
  2. 当代理将被设置为代理A,我们需要做一个取代对“”ProxyB
  3. 当将代理服务器设置为ProxyB,我们需要做一个取代对“”代理A

我可以使用两个sed命令来执行此操作。实现这一目标的最有效方法是什么?我认为可以通过单个sed命令来完成。

Pietzcker团队

换句话说,这三个值中的一个都不重要

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

会将三个可能的值中的任何一个替换为ProxyA(当然,这意味着它也将ProxyA自己替换,但是如果您想将所有内容都放入一个正则表达式中,这就是您需要做出的妥协。)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章