我有一个简单的Yaml文件:
# replicas: number of pods
replicas: 1
# test
hello: world
我将其存储在kubernetes配置图中:
apiVersion: v1
data:
helm_values: |
# replicas: number of pods
replicas: 1
# test
hello: world
kind: ConfigMap
metadata:
creationTimestamp: 2018-07-30T06:07:38Z
我现在想从configmap中提取内部yaml文件。尝试yq我得到:
$ VAR=$(oc get configmap backoffice-deployer -o yaml | yq .data.helm_values)
$ echo $VAR
"# replicas: number of pods\nreplicas: 1\n# test\nhello: world\n"
如果我尝试将VAR回显或打印到文件中,其格式将不像原始文件那样好。
在bash中以bash中原始文件的格式取回提取数据的最简单方法是什么?
答案 0 :(得分:1)
我无法完全复制您的代码,但这就是我得到的(OSX,bash v4.4.23,yq v2.1.0):
var=$(cat test.yaml | yq r - data.helm_values)
echo "$var"
有输出
# replicas: number of pods
replicas: 1
# test
hello: world
如果我忘记了引号(echo $var
),则:
# replicas: number of pods replicas: 1 # test hello: world
(没有换行符,没有\n
)。
我什至可以进一步处理它:
echo "$var" | yq r - hello
# => world
对于yq v2.6.0,命令参数已更改:
var=$(cat test.yaml | yq -r .data.helm_values)
echo "$var"