Verwenden von Platzhaltern mit „select()“ in jq

Verwenden von Platzhaltern mit „select()“ in jq

Beim Einfügen von JSON möchte ich in den Test ein Platzhalterzeichen verwenden können, das mit Folgendem verwendet wird select():

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

Ich hatte gehofft, dass es alles ausgibt, dessen Typ mit beginnt dev, z. B. development, devel, devil, aber das tut es nicht.

Ist es möglich, ein Platzhalterzeichen select()in zu verwenden jq?

Antwort1

Sie könnten diebeginnt mit()Funktion. Anhand Ihres Beispiels:

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

Antwort2

Wie Satō Katsura zeigt, Ihr Beispiel, in dem Sie alle Eigenschaften abrufen möchten, die einen Typ haben, derbeginnt mitdie Zeichenfolge devwird durch den jqAusdruck gebildet

.[].properties | select(.type | startswith("dev"))

Sie können jedoch eine komplexere Suche mit regulären Ausdrücken durchführen, indem Siedie testFunktion:

.[].properties | select(.type | test("^dev"))

Das jqDienstprogramm verwendet die PCRE-Variante regulärer Ausdrücke, wie sie von derOniguruma-Bibliothek für reguläre Ausdrücke(Wikipedia-Link).

verwandte Informationen