在一些 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正規表示式函式庫(維基百科連結)。