dasel
Dasel(数据选择器的缩写)允许您使用选择器字符串查询和修改数据结构。
类似于jq / yq,但支持JSON、YAML、TOML、XML和CSV,且零运行时依赖。
一个工具统治所有
告别为了处理不同数据格式而学习新工具的时代。
无论数据格式如何,Dasel都使用标准的选择器语法。这意味着一旦你学会了如何使用dasel,你就可以立即查询/修改任何支持的数据类型,而无需任何额外的工具或努力。
目录
快速开始
Dasel可通过homebrew、ASDF、scoop、docker、Nix获取,或从最新发布下载编译好的二进制文件。
brew install dasel
你也可以通过以下命令安装开发版本:
go install github.com/tomwright/dasel/v2/cmd/dasel@master
更多信息请参阅安装文档。
选择
echo '{"name": "Tom"}' | dasel -r json 'name'
"Tom"
参见选择文档。
将JSON转换为YAML
echo '{"name": "Tom"}' | dasel -r json -w yaml
name: Tom
参见选择文档。
放置
echo '{"name": "Tom"}' | dasel put -r json -t string -v 'contact@tomwright.me' 'email'
{
"email": "contact@tomwright.me",
"name": "Tom"
}
参见放置文档。
删除
echo '{
"email": "contact@tomwright.me",
"name": "Tom"
}' | dasel delete -r json '.email'
{
"name": "Tom"
}
参见删除文档。
自动补全
如果你想在终端中使用自动补全,可以执行以下操作(以zsh为例):
将以下内容添加到~/.zshrc
并重新加载终端。
export fpath=(~/zsh/site-functions $fpath)
mkdir -p ~/zsh/site-functions
dasel completion zsh > ~/zsh/site-functions/_dasel
compinit
Pre-Commit
在.pre-commit-config.yaml
文件中添加dasel
钩子
- repo: https://github.com/TomWright/dasel
rev: v1.25.1
hooks:
- id: dasel-validate
用于原生执行dasel,或使用:
dasel-validate-docker
pre-commit钩子,使用官方Docker镜像执行daseldasel-validate-bin
pre-commit钩子,使用官方二进制文件执行dasel
问题与讨论
我已在此仓库中启用了讨论功能。
我知道在决定如何沟通报告问题、提问或提出功能请求时可能会有一些困惑,所以本节旨在帮助我们在这方面达成一致。
请在以下情况下提出问题:
- 你发现了一个bug。
- 你有一个功能请求,并且可以清楚地描述你的请求。
请在以下情况下开启讨论:
- 你有一个问题。
- 你不确定如何使用dasel实现某些功能。
- 你有一个想法,但不太确定你希望它如何工作。
- 你用dasel实现了一些很酷的东西,想展示一下。
- 其他任何情况!
特性
- 从结构化数据文件中查询/选择数据。
- 更新结构化数据文件中的数据。
- 创建数据文件。
- 支持多种数据格式/类型。
- 在数据格式/类型之间转换。
- 对所有数据格式使用标准查询/选择器语法。
- 零运行时依赖。
- 可在Linux、Mac和Windows上使用。
- 可导入并在你自己的项目中使用。
- 通过Docker运行。
- 比jq/yq更快。
- Pre-commit钩子。
文档
dasel的官方文档可在daseldocs.tomwright.me找到。
在线试用
你可以使用在线试用环境测试dasel命令。
在线试用环境的源代码可在github.com/TomWright/daselplayground找到。
基准测试
在我的测试中,dasel比jq快3倍,比yq快15倍。
查看基准测试目录。