给定json:
[
{
"path": "Module1/",
"users": [
"john",
"jane"
]
},
{
"path": "Module2/",
"users": [
"mike",
"mary"
]
},
{
"path": "Module3/",
"users": [
"billy",
"bonny"
]
}
]
给定的文件数组:
[
"Module1/file.java",
"Module3/file.java"
]
How can I get the users for which any of the files match the path?个
预期输出:
[
"john",
"jane",
"billy",
"bonny"
]
我最近找到了一个类似问题的答案,它巧妙地构建了正则表达式过滤器,并在JQ中作为arg传递: https://stackoverflow.com/a/54630000/8784215个
我的设置与此类似:
users='[{"path":"Module1/","users":["john","jane"]},{"path":"Module2/","users":["mike","mary"]},{"path":"Module3/","users":["billy","bonny"]}]'
files='["Module1/file.java","Module3/file.java"]'
filter=($(echo $files | jq -r '. | join(" ")'))
echo $users | jq --arg re "$(IFS="|"; echo "${filter[*]}")" '[.[] | select(.path | test($re)) | .users[]]'
但问题是,路径是与文件匹配的,而实际上应该是相反的.
有什么主意吗?