JQ using not with IN 不起作用或有任何影响?

JQ using not with IN does not work or have any effect?

此代码按预期工作:

jq --argjson BL ${BL} '.rows[] | select(.cells[] | .value | IN($BL[]))

它return是一个包含 $BL

值的元素列表

我想 return 所有不在 $BL 中的,所以我使用 |不是

它 return 与没有 | 的结果完全相同不是,好像没什么区别

jq --argjson BL ${BL} '.rows[] | select(.cells[] | .value | IN($BL[]) | not)

使用以下内容完全没有任何回报

jq --argjson BL ${BL} '.rows[] | select(.cells[] | .value | IN($BL[]|not))

在将 IN 与 NOT 结合使用时,我是否遗漏了一件简单的事情?

供参考 $BL 是电子邮件地址数组,尝试进行 api 调用和 return 所有没有在 $BL

中列出电子邮件的元素

您的 select 收到一系列布尔值,每个值对应 .cells 数组中的每一项。使用 not 会反转所有这些,这意味着如果您有一组混合的布尔值,它仍然会是混合的,并且在任何一种情况下 select 都会将那些被评估的 true

解决方法是使用anyallaggregate这些布尔值。没有任何示例数据,我假设您正在寻找

.rows[] | select(any(.cells[]; .value | IN($BL[])) | not)