像这样的YAML文件:
http:
Domain: {{ environment.domains.httpport }}
images:
emas_fe_weex: 20170810-ed0b13f
eweex_basic_manager: 20150109-e0fafa3
replicaCount:
xxxx: 1
resources:
{}
如何通过shell获得以下内容?
emas_fe_weex: 20170810-ed0b13f
eweex_basic_manager: 20150109-e0fafa3
答案 0 :(得分:2)
最好使用YAML解析器处理YAML,例如使用Python和ruamel.yaml
(免责声明:我是该软件包的作者)。输入input.yaml
:
< input.yaml python -c "import sys, ruamel.yaml; yaml=ruamel.yaml.YAML(); yaml.dump(yaml.load(sys.stdin)['http']['images'], sys.stdout)"
将输出:
emas_fe_weex: 20170810-ed0b13f
eweex_basic_manager: 20150109-e0fafa3
答案 1 :(得分:1)
我同意Anthon的观点:YAML非常复杂,需要使用YAML解析器(例如XML,JSON,CSV等)
以下是一些其他脚本语言示例,具体取决于您的喜好:
Ruby
exclude-pods.json
Perl(需要CPAN的YAML :: XS)
ruby -ryaml -e '
data = YAML.load($stdin)
puts YAML.dump(data["http"]["images"])
' < file.yaml
Tcl(需要tcllib)
perl -MYAML::XS -0777 -nE '
$data = Load($_);
say Dump($data->{http}{images})
' < file.yaml
答案 2 :(得分:0)
如果您正在使用grep
可用的系统,则可以同时使用它们。假设数据位于名为http.yaml
的文件中:
grep -e emas_fe_weex -e eweex_basic_manager http.yaml