在jq get数组中基于另一个数组

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)

Ini*_*ian 5

使用简单的jq过滤器而不进行其他shell处理,请按以下步骤操作.

jq '[.mine[] as $in | .stuff[$in].name]'
Run Code Online (Sandbox Code Playgroud)

逻辑基本上是索引来自.mine和每个条目的.name值得到的等价值.stuff

jqplay - URL