[英]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.