web-dev-qa-db-ja.com

jq配列から値を選択

値の例を含む次のJSONファイルがあります。

_{
    "files": [{
        "fileName": "FOO",
        "md5": "blablabla"
    }, {
        "fileName": "BAR",
        "md5": "alaldlafj"
    }]
}
_

ここで必要なのは、たとえばfileNameが「FOO」であるmd5値を返すことです。このために、jqに次のステートメントがあります。

_cat <file>.json | jq '.[] | select(.fileName=="FOO")' 
_

ただし、応答は次のとおりです。jq: error (at <stdin>:11): Cannot index array with string "fileName"

キーfileNameが特定の引数に等しい場合にmd5値を返す正しい方法は何ですか?

8
Marvin Effing

答えが見つかりました:

cat <file>.json | jq -r '.files[] | select(.fileName=="FOO") | .md5'
9
Marvin Effing

または:cat .json | jq -r'.files [] | select(.fileName == "FOO")。md5 '

0
Alex Berger