我有以下带有示例值的JSON文件:
{
"files": [{
"fileName": "FOO",
"md5": "blablabla"
}, {
"fileName": "BAR",
"md5": "alaldlafj"
}]
}
Run Code Online (Sandbox Code Playgroud)
现在我想要的是返回md5值,例如fileName是"FOO".为此,我在以下声明jq:
cat <file>.json | jq '.[] | select(.fileName=="FOO")'
Run Code Online (Sandbox Code Playgroud)
但回复是: jq: error (at <stdin>:11): Cannot index array with string "fileName"
返回密钥fileName等于某个参数的md5值的正确方法是什么?
jmu*_*sch 13
回答更通用的如何从数组中选择值选择所有文件名:
cat results.json | jq '.files[] | .filename'
Run Code Online (Sandbox Code Playgroud)
Mar*_*ing 10
找到答案:
cat <file>.json | jq -r '.files[] | select(.fileName=="FOO") | .md5'
Run Code Online (Sandbox Code Playgroud)
或者:
cat <file>.json | jq -r '.files[] | select(.fileName=="FOO").md5'
Run Code Online (Sandbox Code Playgroud)