我有一个看起来像这样的 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
我想提取服务名称,这与YAMLyq
的等价物相同jq
,以获得以下输出:
"apache"
"mysql"
"php"
目前我可以这样实现:
$ cat docker-compose.yml | yq '.services' | yq 'keys[]'
"apache"
"mysql"
"php"
即使它有效,双管yq
对我来说似乎很奇怪。我想我做错了。
问题:有没有办法用一个yq
命令来实现它?
我尝试了这个但没有成功,从这个问题中获得灵感:
$ cat docker-compose.yml | yq '.services.keys[]'
jq: error: Cannot iterate over null