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 つの値に置き換える必要があります。ProxyAまたは ProxyBのいずれか、またはプロキシなしの場合は""のいずれかです。を使って効率的にできるようになりたいですsedここで、プロキシをProxyBに設定したいとします。次に、プロキシが 空か ProxyAに設定されているかを確認し、検索と置換を行います。したがって、次の 3 つのケースが考えられます。

  1. プロキシを""に設定する場合、 ProxyAProxyBを置き換える必要があります
  2. プロキシをProxyAに設定する場合、 ""ProxyBを置き換える必要があります
  3. プロキシをProxyBに設定する場合、 ""ProxyAを置き換える必要があります

これは、2 つの sed コマンドを使用して実行できます。これを達成する最も効率的な方法は何ですか?sedコマンド一発でできると思います。

4

1 に答える 1

2

つまり、これら 3 つの値のどれが存在するかは問題ではありません。

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

は、3 つの可能な値のいずれかを に置き換えますProxyA。(もちろん、それはProxyAそれ自体にも置き換えられることを意味しますが、すべてを単一の正規表現に収めたい場合は、妥協する必要があります。)

于 2013-10-19T08:01:05.523 に答える