Вывести значения ключей с точкой

У меня есть файл yaml в следующем формате

---
users:
  foo1.bar1@email.com:
    - roles/role1
    - roles/role2
    - roles/role3

  foo2.bar2@email.com:
    - roles/role4
    - roles/role5
    - roles/role6

Теперь я хотел бы распечатать роли для foo1.bar1@email.com

Я пытаюсь сделать следующее

cat permissions.yaml | yq '.users[ foo1.bar1@email.com]'
jq: error: syntax error, unexpected FORMAT (Unix shell quoting issues?) at <top-level>, line 1:
.users[ foo1.bar1@email.com]
jq: 1 compile error

Есть ли способ обойти это?

2 ответа

Если вы используете v3 (или более позднюю версию) mikefarah/yq , вы можете экранировать ключи кавычками, например так:

      cat permissions.yaml | yq e '.users."foo1.bar1@email.com"' -

или же

      cat permissions.yaml | yq e '.users["foo1.bar1@email.com"]' - 

Документировано в версии 3 здесь и в версии 4 здесь .

Я проверил это с v4.13.4:

      $ yq --version
yq (https://github.com/mikefarah/yq/) version 4.13.4

Попробуйте удалить пробел перед ключом:

cat permissions.yaml | yq '.users[foo1.bar1@email.com]'

Это могло бы решить эту проблему.

Другие вопросы по тегам