添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

自己实现shell 读写yaml文件的工具

90浏览 · 2024-02-05 20:14:22
如果你需要在自己的shell[脚本](https://geek.csdn.net/educolumn/093b3e5243538c1a64b04def9c71bb94?spm=1055.2569.3001.10083)中读写YAML格式的文件,可以使用yq工具。yq是一个命令行工具,可以让你轻松地读写YAML格式的文件。以下是使用yq读写YAML文件的示例。 读取YAML文件: ```bash $ yq r example.yaml 写入YAML文件: ```bash $ yq w -i example.yaml key value 其中,-i选项表示直接修改原始文件。如果你需要将数据写入新文件,可以使用以下命令: ```bash $ yq w example.yaml key value > new.yaml 以上命令中,key是你要写入的键,value是你要写入的值。你可以根据需要使用嵌套键,例如: ```bash $ yq w -i example.yaml parent.child.key value 这会在example.yaml文件中创建一个名为parent的[字典](https://geek.csdn.net/educolumn/ba94496e6cfa8630df5d047358ad9719?dp_token=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpZCI6NDQ0MDg2MiwiZXhwIjoxNzA3MzcxOTM4LCJpYXQiOjE3MDY3NjcxMzgsInVzZXJuYW1lIjoid2VpeGluXzY4NjQ1NjQ1In0.RrTYEnMNYPC7AQdoij4SBb0kKEgHoyvF-bZOG2eGQvc&spm=1055.2569.3001.10083),其中包含一个名为child的[字典](https://geek.csdn.net/educolumn/ba94496e6cfa8630df5d047358ad9719?dp_token=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpZCI6NDQ0MDg2MiwiZXhwIjoxNzA3MzcxOTM4LCJpYXQiOjE3MDY3NjcxMzgsInVzZXJuYW1lIjoid2VpeGluXzY4NjQ1NjQ1In0.RrTYEnMNYPC7AQdoij4SBb0kKEgHoyvF-bZOG2eGQvc&spm=1055.2569.3001.10083),该[字典](https://geek.csdn.net/educolumn/ba94496e6cfa8630df5d047358ad9719?dp_token=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpZCI6NDQ0MDg2MiwiZXhwIjoxNzA3MzcxOTM4LCJpYXQiOjE3MDY3NjcxMzgsInVzZXJuYW1lIjoid2VpeGluXzY4NjQ1NjQ1In0.RrTYEnMNYPC7AQdoij4SBb0kKEgHoyvF-bZOG2eGQvc&spm=1055.2569.3001.10083)包含一个名为key的值为value的键值对。 除了yq之外,还有一些其他的YAML工具可供选择,例如python的PyYAML库和ruby的YAML库。这些工具可以让你在[脚本](https://geek.csdn.net/educolumn/093b3e5243538c1a64b04def9c71bb94?spm=1055.2569.3001.10083)中轻松地读写YAML文件。
相关问题
### 回答1: 在bash shell中读写YAML文件可以使用yq和jq这两个工具。其中,yq是一个基于Python的YAML处理工具,而jq是一个基于C语言的JSON处理工具,但它也支持YAML格式。 以下是一个使用yq和jq来读写YAML文件的bash脚本示例: ```bash #!/bin/bash # 读取yaml文件中的数据 name=$(yq r config.yaml name) age=$(yq r config.yaml age) echo "name: $name, age: $age" # 修改yaml文件中的数据 yq w -i config.yaml name "new_name" yq w -i config.yaml age 20 # 读取修改后的yaml文件中的数据 name=$(yq r config.yaml name) age=$(yq r config.yaml age) echo "name: $name, age: $age" # 将yaml文件转换为json格式 jq '.' config.yaml > config.json ```