いくつかの 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リンク)