编程开源技术交流,分享技术与知识

网站首页 > 开源技术 正文

x-cmd pkg | dasel - JSON、CSV 等数据的查询和修改工具

wxchong 2024-08-19 23:56:47 开源技术 20 ℃ 0 评论

简介

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 命令安装, 详情参考 xx-cmd | 弹指一X,腾云万里。轻量级,功能强大的集成式命令行工具
  2. x-cmd 提供1分钟教程,其中包含了 dasel 命令常用功能的 demo 示例,可以帮你快速上手 dasel 。
  3. 使用案例:
# 查询 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. 三类子命令:
    - select
    - put
    - 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 值得一看。

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表