x-cmd pkg | dasel – JSON、YAML、TOML、XML、CSV 数据的查询和修改工具

目录

    • 简介
    • 首次用户快速实验指南
    • 基本功能
    • 性能特点
    • 竞品
    • 进一步探索

简介

dasel,是数据(data)和 选择器(selector)的简写,该工具使用选择器查询和修改数据结构。

  1. 支持 JSON,YAML,TOML,XML 和 CSV 五种常用的数据格式作为输入和输出格式。
  2. 实现常用数据格式(JSON, YAML, TOML, XML, CSV)之间的转换。
  3. 单执行文件,不需要依赖第三方库。
  4. 启动速度更快,在小数据比 jq/yq 耗时更短,效率更高。

首次用户快速实验指南

  1. 使用 x dasel 即可自动下载并使用

    • 在终端运行 eval "$(curl https://get.x-cmd.com)" 即可完成 x 命令安装, 详情参考 x-cmd 官网
  2. x-cmd 提供1分钟教程,其中包含了 dasel 命令常用功能的 demo 示例,可以帮你快速上手 dasel 。

  3. 使用案例:

    dasel-1min-cn

    # 查询 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 提供了:

  1. 三类子命令:
    1. select
    2. put
    3. delete
  2. 超过20种选择器

性能特点

  1. dasel 并没有采用流式处理,在处理前,当前将整个数据都加载到内存中,因此,如果用户处理较大的数据时,dasel 可能会要求与数据大小相当(甚至更多)的内存。
  2. dasel 启动时间比 jq/yq 更优,因此在小数据处理时,dasel 的效率更高。官网提供了一份测试报告。
  3. 综上所述,dasel 在效率上能够足以应对手动维护的配置文件(例如 Kuberneter 的 yml)。加上其简单易用,DSL 和参数设计的可读性强,便于维护。如果你需要对配置文件进行增删改查,dasel 是一个不错的选择。

竞品

  1. 如果你需要更灵活的更强大(但学习成本更高)的控制,或者你处理数据很大,需要流式处理,有如下选择:
    1. jq : 输入数据为 JSON,输出数据可以是 JSON,CSV和文本
    2. yq : 可以同时处理 JSON,YML,CSV,XML;
    3. xsv : 采用 rust 编写的高效 CSV/TSV 的处理工具,专门为大数据而生。
  2. 如果你想使用通用的 SQL 来查询和操作 JSON 和 CSV,那么 trdsql 值得一看。

进一步探索

  • dasel 官方提供了详细的 Gitbook 文档,该文档对 dasel 的 DSL 进行了详尽的介绍。
  • dasel 的 GitHub 地址