Mar*_*cus 6 arrays jmespath map-function
我正在尝试过滤从 Azure CLI 获得的普通列表,并且正在努力构建一个正确过滤列表的查询。一个封装了我要完成的任务的示例是尝试过滤列表[1, 2, 3, 4, 5]并尝试获取大于 2 的所有值。
使用 jq,我可以这样做:echo "[1, 2, 3, 4, 5]" | jq "map(select(. > 2))"给[3, 4, 5 ]. 据我所知,问题在于无法在 JMESPath 中指示“当前元素”,而没有特定的键可供参考。
我将如何使用 JMESPath 查询过滤像这样的简单列表?
Mar*_*cus 10
这可以使用当前节点标记@作为过滤器表达式的一部分来完成。一个注意事项是您必须用反引号将 JMESPath 中的文字括起来。否则会导致表达式无效。这是从数组中获取所有大于 2 的数字的过滤器:
[?@ > `2`]
Run Code Online (Sandbox Code Playgroud)
对于数字以外的对象数组,您可以使用过滤器表达式中的任何内置函数以及当前节点标记@进行过滤。这将为您提供所有包含substring以下内容的字符串:
[?contains(@, `substring`)]
Run Code Online (Sandbox Code Playgroud)