Вывести значения ключей с точкой
У меня есть файл 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]'
Это могло бы решить эту проблему.