【发布时间】:2021-06-23 11:10:12
【问题描述】:
这与这个问题很接近:jq filter JSON array based on value in list,唯一的区别是条件。我不希望平等作为条件,而是“包含”,但我正在努力正确地做到这一点。
问题: 如果要根据条目中是否存在特定值来过滤输入文件的元素 输入文件:
[{
"id":"type 1 is great"
},{
"id":"type 2"
},
{
"id":"this is another type 2"
},
{
"id":"type 4"
}]
过滤器文件: ids.txt:
type 2
type 1
select.jq 文件:
def isin($a): . as $in | any($a[]; contains($in));
map( select( .id | contains($ids) ) )
jq 命令:
jq --argjson ids "$(jq -R . ids.txt | jq -s .)" -f select.jq test.json
预期的结果应该是这样的:
[{
"id":"type 1 is great"
},{
"id":"type 2"
},
{
"id":"this is another type 2"
}]
问题显然出在select.jq文件的“isin”函数中,那么如何正确编写来检查一个条目是否包含另一个数组的字符串之一?
【问题讨论】:
标签: json object select substring jq