jq の "select()" でワイルドカードを使用する

jq の "select()" でワイルドカードを使用する

いくつかの JSON をパイプして、次のように使用されるテストでワイルドカードを使用できるようにしますselect()

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

devたとえばdevelopment、、develなど、 で始まる型を持つものがすべて印刷されることを期待していましたdevilが、そうではありませんでした。

select()内でワイルドカードを使用することは可能ですか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の正規表現を使用します。鬼車正規表現ライブラリ(Wikipediaリンク)

関連情報