4
我JSON數據,看起來像:如何收集jq中多個對象的數組值域的唯一元素?
{"foo":"one", "bar":2, "baz":[0]}
{"foo":"two", "bar":3, "baz":[1]}
{"foo":"one", "bar":3, "baz":[2,3]}
{"foo":"one", "bar":2, "baz":[2,4]}
我想組都使用相同的「foo」和收集欄的唯一值,然後領取「巴茲」陣列內的唯一值:
[
{"foo":"one", "bar":[2, 3], "baz":[0,2,3,4]},
{"foo":"two", "bar":[3], "baz":[1]}
]
(I不在乎如果結果是在陣列中,或只是由空格組成的原始序列分開JSON對象,我不關心的項目的「baz」的數組中的順序)
我已經安裝了jq 1.4版本CE。我可以正確地被「富」,收集「酒吧」的獨特價值與組:
jq -s 'group_by(.foo) | map({foo: .[0].foo, bar: map(.bar) | unique})'
產生:
[
{"foo":"one","bar":[2,3]},
{"foo":"two","bar":[3]}
]
,但我無法弄清楚如何做的唯一值的集合「巴茲」。
我錯過了什麼?
可以只使用你'添加' – 2014-09-30 20:38:12
@JeffMercado你有一個如何做到這一點的例子嗎? – bskaggs 2014-09-30 20:45:10
只需用'add'替換'flatten'即可。幸運的是,所有baz值都是數組,因此將數組添加到一起具有相同的效果。 – 2014-09-30 20:47:57