我有一个包含多个对象 ID 的 json 文件,我需要一个根据命名约定排除不同 ID 的查询。这些本质上是“或”。我以为我已经有了这个查询,但它们仍然出现在输出中。
如果我单独与它们一起运行查询,我可以让它工作,但我需要添加一个大列表。
作品
cat file.json | jq '.interface[] | select(.description | contains ("VLL") | not )'
Run Code Online (Sandbox Code Playgroud)
不工作
cat file.json | jq '.interface[] | select(.description | contains ("VLL"|"2002089"|"otherstuff" ) | not )'
Run Code Online (Sandbox Code Playgroud)
我尝试了几种使用逗号和引用的不同方法,但没有成功。
我离得还远吗?
我还计划在 bash 脚本中运行它,如果有帮助的话(可能会变得更糟)
谢谢
我离得还远吗?
如果使用test/1代替contains,并进行相应调整,则不会:
.interface[]
| select(.description | test ("VLL|2002089|otherstuff" ) | not )
Run Code Online (Sandbox Code Playgroud)
test 的参数被解释为正则表达式。当然还有其他选择,但如果使用正则表达式合适,那么test就合适。
如果您有字符串黑名单并希望使用字符串相等性作为标准,请考虑:
["VLL","2002089","otherstuff"] as $blacklist
| .interface[]
| select(.description | IN($blacklist[]) | not)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5301 次 |
| 最近记录: |