简介
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 命令安装, 详情参考 xx-cmd | 弹指一X,腾云万里。轻量级,功能强大的集成式命令行工具 - 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 是一个不错的选择。
竞品
- 如果你需要更灵活的更强大(但学习成本更高)的控制,或者你处理数据很大,需要流式处理,有如下选择:
1. jq : 输入数据为 JSON,输出数据可以是 JSON,CSV 和文本
2. yq : 可以同时处理 JSON,YML,CSV,XML;
3. xsv : 采用 rust 编写的高效 CSV/TSV 的处理工具,专门为大数据而生。 - 如果你想使用通用的 SQL 来查询和操作 JSON 和 CSV,那么 trdsql 值得一看。
本文暂时没有评论,来添加一个吧(●'◡'●)