bash - 从 bash 中的 yaml 数组中获取值
问题描述
是否有一种“简单”的方式(没有函数或包)来获取终端(bash/sh)中YAML 文件的值?
我想提取 users -> user("kube-admin-local") -> client-certificate-data 的值
这是 YAML 示例:
users:
- name: "kube-admin-local"
user:
client-certificate-data: 0FURS0tLS0tCk1JSUM2VENDQWRHZ0F3SUJBZ0lJT2wyZ0NHL1BnTWd3RFFZSktvWklodmNOQVFFTEJRQ
- name: kube-admin
user:
client-certificate-data: LS0tLS1CRUd=0FURS0tLS0tCk1JSUM2VENDQWRHZ0F3SUJBZ0lJT2wyZ0NHL1BnTWd3RFFZSktvWklodmNOQVFFTEJ
解决方案
这不适用于所有系统,但是
sed -n '/name: "kube-admin-local"/,/name:/s/.*client-certificate-data: \(.*\)/\1/p'
应该这样做。
-n
: 除非明确说明,否则不要打印/name: "kube-admin-local"/,/name:/
: 这些匹配之间的行- rest :替换数据并打印
推荐阅读
- python - 学校任务所需的帮助
- python - 如何将 DateTime 多索引恢复为正常的 DateTime 索引?
- swagger - 请求正文未显示在 Nest.js + Swagger 中
- android - Razorpay 退款
- excel - 对列表框中的日期进行排序
- perl - ViennaRNA 包的 Perl 模块 RNA.pm 是必需的
- javascript - 我正在尝试将 JSON 对象从客户端发送到服务器并接收响应,但我发现的所有方法要么不足,要么矫枉过正
- tensorflow - tensorflow 无法将 dtype 资源的张量转换为 NumPy 数组。特飞特
- flutter - Flutter:如何声明 StreamSubscription 的 HashMap
- list - Prolog 生成器卡住了一遍又一遍地尝试相同的对象?