我有yaml文件,它位于不同的目录。Chart.yaml:
apiversion:v2 name: microservicename version: 1.0.0 appVersion: "1.2.1"
我想提取值并保存在变量中。变量中的输出应为:1.2.1您能建议我如何在这个场景中使用grep、awk和sed吗?我试过使用yq,它不工作。安装yq,neit变量中的预期输出=1.2.1
0kjbasz61#
有效的YAML键和值由冒号和空格分隔。您提供的示例在第一行的冒号之间没有空格。这是有效的:
apiVersion: v2 name: microservicename version: 1.0.0 appVersion: "1.2.1"
然后可以使用yq(https://github.com/mikefarah/yq):
yq e '.appVersion' <path_to_your_yaml_file>
如果您使用https://pypi.org/project/yq/中的yq,则应该可以做到这一点:
yq .appVersion <path_to_your_yaml_file>
crcmnpdw2#
GNU AWK
awk -F'"' '/appVersion/{print $2}' /path/to/Chart.yaml
-F'"'
"
/appVersion/
print $2
awk '/appVersion/{gsub(/"/,""); print $2}' /path/to/Chart.yaml
1.使用默认分隔符blank
blank
gsub(/"/,"")
$ myvar=$(awk -F'"' '/appVersion/{print $2}' /path/to/Chart.yaml) $ echo $myvar 1.2.1 $ myvar=$(awk '/appVersion/{gsub(/"/,""); print $2}' /path/to/Chart.yaml) $ echo $myvar 1.2.1
2条答案
按热度按时间0kjbasz61#
有效的YAML键和值由冒号和空格分隔。您提供的示例在第一行的冒号之间没有空格。
这是有效的:
然后可以使用yq(https://github.com/mikefarah/yq):
如果您使用https://pypi.org/project/yq/中的yq,则应该可以做到这一点:
crcmnpdw2#
GNU AWK
-F'"'
使用"
作为分隔符/appVersion/
查找“appVersion”行print $2
打印第二个字段或
1.使用默认分隔符
blank
/appVersion/
查找“appVersion”行gsub(/"/,"")
删除所有"
print $2
打印第二个字段