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

相關內容