use*_*391 3 arrays iteration bash json jq
我正在使用jq v1.5.鉴于输入:
{
"mine": [
"foo",
"baz"
],
"stuff": {
"foo": {
"name": "Foo"
},
"bar": {
"name": "Bar"
},
"baz": {
"name": "Baz"
},
"qux": {
"name": "Qux"
}
}
}
Run Code Online (Sandbox Code Playgroud)
如何获取.mine的所有.stuff.name?
例如,期望的输出:
[
"Baz",
"Foo"
]
Run Code Online (Sandbox Code Playgroud)
使用简单的jq过滤器而不进行其他shell处理,请按以下步骤操作.
jq '[.mine[] as $in | .stuff[$in].name]'
Run Code Online (Sandbox Code Playgroud)
逻辑基本上是索引来自.mine和每个条目的.name值得到的等价值.stuff