Передавая 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(Ссылка на Википедию).