在 jq 中使用“select()”通配符

在 jq 中使用“select()”通配符

在一些 JSON 中进行管道传输,我希望能够在测试中使用通配符select()

curl example.com/json | jq  'select(.[].properties.type == "dev*")'

我希望它能打印出以 开头的类型的任何内容dev,例如development, devel, devil,但事实并非如此。

select()是否可以在in中使用通配符jq

答案1

您可能会考虑以。。开始()功能。使用你的例子:

curl example.com/json | jq '.[].properties | select(.type | startswith("dev"))'

答案2

正如佐藤桂所示,您想要获取具有以下类型的所有属性的示例以。。开始该字符串由表达式dev拥有jq

.[].properties | select(.type | startswith("dev"))

但是,您可以使用正则表达式进行更精细的匹配功能test

.[].properties | select(.type | test("^dev"))

jq实用程序使用正则表达式的 PCRE 风格,由Oniguruma正则表达式库(维基百科链接)。

相关内容