Open1
jq スニペット
「オブジェクトの配列」から条件にマッチするオブジェクトの index を取得する。
$ cat data.json
[{ "name": "A", "value": 1 }, { "name": "B", "value": 20 }, { "name": "C", "value": 100 }]
$ jq 'map(.name == "B") | index(true)' data.json
1
ポイント
index関数 には値しか渡すことができない。
なので index(.name == "B")
みたいな書き方ができない。
そこで、まずはmap関数 を使って目当てのオブジェクトのみ true
にする。その後配列の中で true
になっている要素の index を index(true)
で返させている。
利用シーン
json を読み込んで処理を行うプログラムが実行中に止まったから、「続きから実行させるための json を生成するには。。。」と思って調べてた
見つけた場所