Shell 如何grep一个yaml值
我尝试从shell中的YAML文件中获取值:Shell 如何grep一个yaml值,shell,grep,kubernetes,yaml,Shell,Grep,Kubernetes,Yaml,我尝试从shell中的YAML文件中获取值: apiVersion: v1 items: - apiVersion: v1 kind: Pod spec: containers: hostIP: 12.198.110.192 phase: Running podIP: 10.244.1.9 使用kubectl get pods-l run=hello kube-o yaml | grep podIP:我得到以下输出: podIP: 10.244.
apiVersion: v1
items:
- apiVersion: v1
kind: Pod
spec:
containers:
hostIP: 12.198.110.192
phase: Running
podIP: 10.244.1.9
使用kubectl get pods-l run=hello kube-o yaml | grep podIP:
我得到以下输出:
podIP: 10.244.1.9
我的目标是将该值保存在环境变量中,但我只获得键/值
-对:
export PODIP=$(kubectl get pods -l run=hello-kube -o yaml | grep podIP)
使用awk:
kubectl get pods -l run=hello-kube -o yaml | awk '/podIP:/ {print $2}'
输出:
10.244.1.9
10.244.1.9
您还可以使用json格式通过jsonpath获取值,例如
kubectl get pods -l app=cron -o=jsonpath='{.items[0].status.podIP}'
谢谢您还可以使用
yq
(),这是一个类似于jq
的工具
然后做:
% yq read file.yaml items.0.spec.podIP
10.244.1.9
或者使用GNU grep:
|grep-Po'podIP:\K.*
或者如果第1列包含podIP:
print第2列:| awk'$1==“podIP:{print$2}”
我会建议。(pip安装-用户yq
)。它的语法与jq