普通に jq select
すると結果が列挙されるだけなのをなんとかする。
example
例えばこんなJSONがあったときに
cinema.json
[
{
"key": "David",
"value": "seven"
},
{
"key": "Robert",
"value": "dusk"
},
{
"key": "David",
"value": "game"
}
]
jq select
でデータを抜き出すと、こんな感じになる。
> cat cinema.json | jq '.[] | select(.key=="David")'
{
"key": "David",
"value": "seven"
}
{
"key": "David",
"value": "game"
}
これをちゃんとJSONの配列形式にしてやりたい。
配列出力する
そんなときは jq -s '.'
を追加すればよい。
> cat cinema.json | jq '.[] | select(.key=="David")' | jq -s '.'
[
{
"key": "David",
"value": "seven"
},
{
"key": "David",
"value": "game"
}
]
-s
オプションの意味は以下の通り。
-s read (slurp) all inputs into an array; apply filter to it;