jq 中的通配符与比较

Mar*_*ark 6 json jq

在一些 json 中管道,我希望能够在比较中添加通配符,因此:

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

所以它会打印出任何以“dev”开头的类型

IE: development, devel, devil

这可以使用jq吗?

Sat*_*ura 10

您可以考虑使用startswith()函数。使用您的示例:

curl example.com/json | jq '.[].properties | select(.type | startswith("dev"))'
Run Code Online (Sandbox Code Playgroud)


Kus*_*nda 5

正如 Sat\xc5\x8d Katsura 所示,您想要获取具有以字符串开头的类型的所有属性的示例由表达式dev提供jq

\n
.[].properties | select(.type | startswith("dev"))\n
Run Code Online (Sandbox Code Playgroud)\n

但是,您可以使用以下test函数与正则表达式进行更精细的匹配:

\n
.[].properties | select(.type | test("^dev"))\n
Run Code Online (Sandbox Code Playgroud)\n

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

\n