繁体   English   中英

如何在 k8s yaml 文件中获取 name 选项的文本值

[英]how get text value of name option in k8s yaml file

我有很多 yaml 格式的 k8s 部署文件。

我只需要在这些文件中获取第一次出现的 name 选项的值。

部署示例.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
  labels:
    app: nginx
spec:
  replicas: 3
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:1.14.2
        ports:
        - containerPort: 80

我只需要获取nginx-deployment的值

我试过了,但没有成功:

grep 'name: ' ./deployment.yaml | sed -n -e 's/name: /\1/p'

如果您为 yaml 安装了yq (类似于jq ),这是一个 yaml 感知工具,并且可能是一个用于解析 yaml 的强大工具。

yq e '.metadata.name' deployment.yaml
nginx-deployment

使用 awk :

awk -v FS="[: ]" '/name:/{print $NF;exit}'  deployment.yaml
nginx-deployment

sed 找到具有name第一行,删除之前的所有内容:然后退出sed

sed -n '/name/{ s/.*: //; p; q}' deployment.yaml

输出:

nginx-deployment

使用支持-P标志的 GNU grep (1)。

grep -m1 -Po '(?<=name: ).*' deployment.yaml 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM