version: jq-1.6 on mac
こういうJSONがあったとしてtestを取りたいとする。キーはユニークなものを想定。
{
"a": "foo",
"b": {
"c": {
"d": {
"test": {
"key": "value"
}
}
}
}
}
これで取れる。
jq '..|select(.test?)|.test' test.json
selectの?がないとCannot index string with string "test"
と言われて怒られるので注意。
testと二回書くのが嫌な時はこれでもいけるけど、検索文字列が短い場合はちょっと冗長な感じかも。
jq '..|to_entries?|.[]|select(.key=="test").value' test.json