目录
- 简介
- 首次用户快速实验指南
- 基本功能
- 性能特点
- 竞品
- 进一步探索
简介
dasel,是数据(data)和 选择器(selector)的简写,该工具使用选择器查询和修改数据结构。
- 支持 JSON,YAML,TOML,XML 和 CSV 五种常用的数据格式作为输入和输出格式。
- 实现常用数据格式(JSON, YAML, TOML, XML, CSV)之间的转换。
- 单执行文件,不需要依赖第三方库。
- 启动速度更快,在小数据比 jq/yq 耗时更短,效率更高。
首次用户快速实验指南
-
使用
x dasel
即可自动下载并使用- 在终端运行
eval "$(curl https://get.x-cmd.com)"
即可完成 x 命令安装, 详情参考 x-cmd 官网
- 在终端运行
-
x-cmd 提供1分钟教程,其中包含了 dasel 命令常用功能的 demo 示例,可以帮你快速上手 dasel 。
-
使用案例:
# 查询 ascii 码表中的首个 ASCII 码的 "Description" 字段的值 x ascii --json | x dasel -r json '[0].Description' # 使用 all() 选择器和 key() 方法获取 JSON 数据中每个对象的 key x ascii --json | x dasel -r json 'all().key()' # 修改 ascii 码表中首个 ASCII 码 "Description" 字段的值为 "Empty" x ascii --yml | x dasel put -r yaml --selector '[0].Description' --value 'Empty' # 读取 CSV 格式的数据并将其转为 JSON 格式 x ascii --csv | x dasel -r csv -w json
基本功能
当前, dasel 提供了:
- 三类子命令:
- select
- put
- delete
- 超过20种选择器
性能特点
- dasel 并没有采用流式处理,在处理前,当前将整个数据都加载到内存中,因此,如果用户处理较大的数据时,dasel 可能会要求与数据大小相当(甚至更多)的内存。
- dasel 启动时间比 jq/yq 更优,因此在小数据处理时,dasel 的效率更高。官网提供了一份测试报告。
- 综上所述,dasel 在效率上能够足以应对手动维护的配置文件(例如 Kuberneter 的 yml)。加上其简单易用,DSL 和参数设计的可读性强,便于维护。如果你需要对配置文件进行增删改查,dasel 是一个不错的选择。
竞品
- 如果你需要更灵活的更强大(但学习成本更高)的控制,或者你处理数据很大,需要流式处理,有如下选择:
- jq : 输入数据为 JSON,输出数据可以是 JSON,CSV和文本
- yq : 可以同时处理 JSON,YML,CSV,XML;
- xsv : 采用 rust 编写的高效 CSV/TSV 的处理工具,专门为大数据而生。
- 如果你想使用通用的 SQL 来查询和操作 JSON 和 CSV,那么 trdsql 值得一看。
进一步探索
- dasel 官方提供了详细的 Gitbook 文档,该文档对 dasel 的 DSL 进行了详尽的介绍。
- dasel 的 GitHub 地址