![在 jq 中使用“select()”通配符](https://linux22.com/image/97610/%E5%9C%A8%20jq%20%E4%B8%AD%E4%BD%BF%E7%94%A8%E2%80%9Cselect()%E2%80%9D%E9%80%9A%E9%85%8D%E7%AC%A6.png)
在一些 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正则表达式库(维基百科链接)。