jQuery使用包含多个匹配条件的包含

时间:2020-09-22 00:32:03

标签: jq

我有一个带有多个对象ID的json文件,我需要一个基于命名约定排除不同ID的查询。这些本质上是“或”的。我以为我在此查询中具有它,但它们仍出现在输出中。

如果我分别对它们运行查询,则可以使用它,但是我需要添加一个大列表。

作品

orderItems = OrderItem.objects.all()
packItems = Pack.objects.all()

for packItem in packItems:
    for orderItem in orderItems:
        if orderItem.pack == packItem:
            print('Yeah, you found one of them')

不起作用

cat file.json | jq '.interface[] | select(.description | contains ("VLL") | not )'

我用逗号和引号尝试了几种不同的方式,但是没有运气。

我远吗?

如果有帮助(可能会变得更糟),我还计划在bash脚本中运行它

谢谢

1 个答案:

答案 0 :(得分:0)

我远吗?

如果您使用test/1而不是contains,并进行了相应的调整,则不会:

.interface[]
| select(.description | test ("VLL|2002089|otherstuff" ) | not )

test的参数被解释为正则表达式。当然还有其他选择,但是如果使用正则表达式是合适的,那么test将是合适的。

字符串黑名单

如果您有一个字符串黑名单,并且希望使用字符串相等性作为准则,请考虑:

["VLL","2002089","otherstuff"] as $blacklist
| .interface[]
| select(.description | IN($blacklist[]) | not)