当前位置: 首页 > 知识库问答 >
问题:

YQ:检索对象密钥名称

凤修为
2023-03-14

我有一个YAML文件(在我的例子中是docker-compose文件),如下所示:

networks:
    foo:
      some_opts: "covfefe"
    bar:
      some_opts: "such wow"
services:
  apache:
    image: 'apache:1.0.0'
    restart: always
  mysql:
    image: 'mysql:1.0.0'
    restart: always
  php:
    image: 'php'
    restart: always
"apache"
"mysql"
"php"
$ cat docker-compose.yml | yq '.services' | yq 'keys[]'
"apache"
"mysql"
"php"

我尝试了这个,但没有成功,从这个问题中得到启发:

$ cat docker-compose.yml | yq '.services.keys[]'
jq: error: Cannot iterate over null

共有1个答案

公孙智
2023-03-14

keysJQ中的一个内置函数。因此,它实际上不是yaml的一部分(不是属性),这意味着您不能执行services.keys

要获得密钥,可以执行以下操作:

我们将在第一部分中获得services的对象,然后将其传递给keys,后者将基于给定对象返回键列表

cat docker-compose.yml | yq '.services | keys'
yq '.services | keys' docker-compose.yml
[
  "apache",
  "mysql",
  "php"
]

yq '.services | keys[]' docker-compose.yml

输出:

"apache"
"mysql"
"php"

有关详细信息的更多信息,可以在jq中查看Builtin运算符和函数。请注意,yqjq的包装器,因此jq的文档将会很有帮助,正如yq的帮助所建议的那样。

 类似资料:
  • 在本章中,我们将学习如何使用Java Cryptography从密钥库中检索密钥。 要从密钥库中检索密钥,请按照以下步骤操作。 第1步:创建KeyStore对象 java.security包的KeyStore类的getInstance()方法接受表示密钥库类型的字符串值,并返回KeyStore对象。 使用此方法创建KeyStore类的对象,如下所示。 //Creating the KeyStore

  • 我们需要使用Azure key vault创建RSA密钥对,并将RSA公钥复制到外部系统。其要求是外部系统使用公钥加密数据,内部系统与azure key vault对话并对数据进行解密。我还没有访问Azure key vault的权限,所以需要查看文档。我有两个基本问题: > 有没有一种方法可以使用Azure portal以文本格式导出RSA公钥,而不使用API(https://docs.micr

  • 我创建了一个密钥库,它包括私钥和公钥。我需要使用java代码检索我的公钥和私钥。我在这里找到了一个检索私钥的方法。但我找不到检索公钥的方法。有人能告诉我一种取出公钥的方法吗

  • 问题内容: 我想问一下如何从KeyPair对象中检索私钥和公钥的实际值,因为我需要将它们导出并保存在数据库中。 输出为: 问题答案: 它可能是最容易使用的或: RSA私钥以PKCS#8格式编码,而公钥以X.509格式编码。

  • 我无法从azure key vault检索到运行在azure windows VM中的.NET控制台应用程序的秘密。下面是我使用过的代码,我已经给了服务主体在密钥库中的所有权限。