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
。
解决方法是使用any
或all
到aggregate这些布尔值。没有任何示例数据,我假设您正在寻找
.rows[] | select(any(.cells[]; .value | IN($BL[])) | not)
此代码按预期工作:
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
。
解决方法是使用any
或all
到aggregate这些布尔值。没有任何示例数据,我假设您正在寻找
.rows[] | select(any(.cells[]; .value | IN($BL[])) | not)