2017-02-15 10 views
0

私は、次のオブジェクトがあります。指定された場所にオブジェクトをマージしますか?

// exhibit a 
{ 
    "exported_modules": ["a", "b"] 
} 
// exhibit b 
{ 
    "name": "thing b" 
} 

彼らは別々のファイルに存在します。基本的に私は.modules.aに展示bの内容を挿入する必要が

{ 
    "exported_modules": ["a", "b"], 
    "modules": { 
    "a": { 
     "name": "thing b" 
    } 
} 
} 

:私は基本的に彼らは、そのような彼らは、以下の状態で統一出力される変換する必要があります。 jqでこれを行う方法はありますか?私はjqです1.3残念ながら、私の配布によって提供されます。

私はwhat has been recommended hereを試していますが、すべてのキーをマージするのではなく、特定の場所にマージすることができませんでした。

答えて

0

jq 1.3は古く、そのバージョンを使用したソリューションはむしろ控えめです。おそらく最善のアプローチは、2つのファイル「読ま」することです:JQ 1.4以降を使用して、

jq1.3 -s '.[1] as $o | .[0] | .modules.a = $o' exhibit-a.json exhibit-b.json 

これは、同様にそれ以降のバージョンで動作しますが、比較のために、一つは書くことができます:

jq --argfile modules exhibit-a.json ' 
    . as $in | $modules | .modules.a = $in' exhibit-b.json 
関連する問題