2017-02-15 5 views
0

Ich habe die folgenden Objekte:Objekt an einem bestimmten Ort zusammenführen?

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

Sie existieren in separaten Dateien. Ich muss im Grunde sie so umwandeln, dass sie Ausgabe in folgendem Zustand vereinigt sind:

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

Im Grunde muss ich b den Inhalt der Ausstellung zum Einfügen in .modules.a. Gibt es eine Möglichkeit, dies in jq zu tun? Ich bin auf jq 1.3 leider, die von meiner Distribution zur Verfügung gestellt wird.

Ich habe versucht, what has been recommended here, aber ich konnte nicht in einen bestimmten Ort zusammenführen, anstatt nur alle Schlüssel zusammenführen.

Antwort

0

jq 1.3 ist alt, also ist die Lösung, die diese Version verwendet, ziemlich unelegant. Vielleicht ist der beste Ansatz wäre, „schlürft“, die beiden Dateien:

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

Dies wird auch mit späteren Versionen arbeiten, aber zum Vergleich, später jq 1.4 oder verwenden, könnte man schreiben:

jq --argfile modules exhibit-a.json ' 
    . as $in | $modules | .modules.a = $in' exhibit-b.json 
Verwandte Themen