我的配置图如下:
apiVersion: v1
data:
my-data.yaml |2-
#data comes here
kind: ConfigMap
是否可以通过
提取my-data.yaml
键的内容
oc get configmap
或任何其他oc
命令?
例如
oc get configmap myconfigmap -o=yaml <[only my-data.yaml]>
答案 0 :(得分:4)
我想演示一个示例命令,前面提到了“ coderanger”。
此示例从yaml转换为json,然后使用“ jq”命令过滤了“ .keyname”。 您也可以使用“ yq”命令来代替python一线和jq组合。
oc get configmap/myconfigmap \
-o "jsonpath={ .data['my-data\.yaml']}" | \
python -c 'import sys, yaml, json; y=yaml.load(sys.stdin.read()); print json.dumps(y)' | \
jq '. | .keyname'
希望对您有帮助。
答案 1 :(得分:1)
不。据kube所见,那只是一长串。您可以使用json路径输出模式来过滤为一个值。然后用jq或yq解析它。或者只是两次使用jq:)
答案 2 :(得分:1)
有一些shell变通办法可以解析{ first_name: 'vij',email: 'vij@gmail.com',mobile_number: '9088888000',address: 'addad,dada'}
文件:
yaml
您可以使用yq
,它是建立在jq
之上的命令行YAML处理器。
您可以下载它并在http://mikefarah.github.io/yq/上找到文档。
yq
另一个工具是openuado/niet
Niet类似于xmllint或jq,但对于YAML和JSON数据-您可以使用它来切片,过滤,映射和转换结构化数据。
您可以使用简单表达式或使用xpath高级功能轻松访问数据。
您可以轻松地将YAML格式转换为JSON格式,反之亦然。
niet
代表纯bash-yaml
对于纯bash
,您可以尝试:
bash
读取yaml文件并在bash中创建变量
简单的41行重击script仅使用jasperes/bash-yaml
和sed
来解析awk
文件并从中创建变量。
yaml
的分隔符粘合在一起
mrbaseman/parse_yaml
提供了一个bash函数,该函数可以解析简单的YAML文件。输出是外壳程序代码,该代码定义了包含已解析值的外壳程序变量。parse_yaml
不支持多维数组。因此,将为每个值创建一个单独的变量,该变量的名称由yaml文件中所有级别的名称组成,这些名称与默认为bash