そういうことがしたいこともあります。
結局やったこと
結果的にすべてを見ればいいので recurse
を使ってうまく処理すればよいことになります。
jq "recurse | select(.id?) | .id" b.json
順番と ?
が重要。jq b.json "recurse | select(.id?) | .id"
では jq: error: b/0 is not defined at <top-level>, line 1:
となりうまく読み込めない。
また ?
がないと、 jq: error (at b.json:1049): Cannot index array with string "id"
となりエラー。
なかなか… 難しいですね… 理由についてはリファレンスを参照したりして、あとで探すことにします。
参考にした記事
- jqを使ってJsonの深いネストにあるキーの値を抽出する方法(上の階層のキーがわからない時) - Qiita
- 2番目のエラーが出て解決できず
- jqでキーを指定して深い位置にある要素を取得する - Qiita
まとめ
jq 、やろうと思ったことがあるのは大変ありがたいですね。いつも使い方を忘れてググってばかりですが…(ちゃんとリファレンスを読む時間を作ったほうがいいのかもしれない)