假设我有一个类似这样的项目列表:
[
"abcdef",
"defghi",
"euskdh"
]
我想编写一个过滤器,该过滤器返回包含“ a”,“ d”或“ h”的所有项目。这是我能想到的最好的方法:
. as $val | select(any(["a", "d", "h"]; inside($val)))
有没有不使用变量的方法吗?
假设您的jq具有正则表达式支持:
map(select(test("a|d|h")))
或者,如果您需要一个值流:
.[] | select(test("a|d|h"))
如果您的jq不支持正则表达式,则如果它支持any / 2,则以下内容将产生值流:
.[] | select( any( index( "a", "d", "h"); . != null ) )
其他所有失败的方法如下:
.[] | select( [index("a", "d", "h")] | any )
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句