【发布时间】:2023-02-03 19:16:12
【问题描述】:
我正在使用具有以下结构的 JSON 对象:
{
"key-foo-1.0": [
{
"key1": "foo",
"key2": "bar",
"id": "01"
},
{
"key1": "foo",
"key2": "bar",
"id": "23"
}
],
"key-bar-1.0": [
{
"key1": "foo",
"key2": "bar",
"id": "45"
},
{
"key1": "foo",
"key2": "bar",
"id": "67"
}
],
"key-baz-1.0": [
{
"key1": "foo",
"key2": "bar",
"id": "89"
}
]
}
我想获取所有 id 值,其中“父”键名称与模式 .*foo.* 或 ` 匹配。酒吧。.
所以在我的例子中是这样的:
cat json | jq <some filter>
01
23
45
67
基于https://unix.stackexchange.com/questions/443884/match-keys-with-regex-in-jq 我试过:
$ cat json | jq 'with_entries(if (.key|test(".*foo.*$")) then ( {key: .key, value: .value } ) else empty end )'
{
"key-foo-1.0": [
{
"key1": "foo",
"key2": "bar",
"id": "01"
},
{
"key1": "foo",
"key2": "bar",
"id": "23"
}
]
}
但我真的不知道如何继续。
我还认为有更好/更简单的解决方案。
【问题讨论】: