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 dev
wird durch den jq
Ausdruck gebildet
.[].properties | select(.type | startswith("dev"))
Sie können jedoch eine komplexere Suche mit regulären Ausdrücken durchführen, indem Siedie test
Funktion:
.[].properties | select(.type | test("^dev"))
Das jq
Dienstprogramm verwendet die PCRE-Variante regulärer Ausdrücke, wie sie von derOniguruma-Bibliothek für reguläre Ausdrücke(Wikipedia-Link).