Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Shell 如何grep一个yaml值_Shell_Grep_Kubernetes_Yaml - Fatal编程技术网

Shell 如何grep一个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.

我尝试从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.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