Использование подстановочных знаков с «select()» в jq

Использование подстановочных знаков с «select()» в jq

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

Связанный контент