Нужен параметр kubectl jsonpath, чтобы получить запись массива, проиндексированную по строке - PullRequest
0 голосов
/ 12 февраля 2020

У меня есть несколько сценариев, которые передают "kubectl ... -o json" в "jq". Я конвертировал многие из этих вхождений, чтобы использовать параметр "jsonpath" для kubectl, чтобы я мог пропустить шаг jq.

Есть один набор из них, который я не смог преобразовать из-за проблем с пунктуацией , Исходная строка выглядит примерно так:

kubectl ... -o json | jq -r '.data["application.properties"]'

В json есть карта «данных», ключи которой могут иметь точки в именах, поэтому я должен проиндексировать ее как массив с имя в качестве ключа. Это работает нормально, используя jq.

Простое преобразование этого в jsonpath выглядит примерно так:

kubectl ... -o=jsonpath="{.data["application.properties"]}"

Это не с:

error: error parsing jsonpath {.data[application.properties]}, invalid array index application.properties

Это не Кажется, это не проблема цитирования, так как он четко определяет, какой у меня индекс индексированных массивов, он просто не позволяет мне его использовать.

Есть ли способ сделать это полностью с помощью jsonpath?

1 Ответ

2 голосов
/ 15 февраля 2020

Хитрость заключается в том, чтобы преобразовать

{.data["application.properties"]}

в:

{.data.application\.properties}

(при необходимости указывать)

...