dasel
dasel (数据选择器的缩写)允许您使用选择器字符串查询和修改数据结构。
与JQ / YQ相当,但支持JSON,YAML,TOML,XML和CSV,其运行时依赖关系为零。
统治所有人的一种工具
说再见,学习新工具只是为了使用不同的数据格式。
无论数据格式如何, dasel都使用标准选择器语法。这意味着,一旦您学习了如何使用dasel ,您就可以立即能够在没有任何其他工具或精力的情况下查询/修改任何受支持的数据类型。
在演示中执行的命令
dasel
echo '{"demo": "Integrating with github releases..."}' | dasel -r json 'demo'
# Fetch dasel releases from github api
curl -L
-H "Accept: application/vnd.github+json"
-H "X-GitHub-Api-Version: 2022-11-28"
https://api.*git**hub.com/repos/TomWright/dasel/releases > releases.json
less releases.json
# Extract and structure release data by version with download URL's by asset name
dasel -f releases.json -w yaml 'all().mapOf(version,tag_name,download,assets.all().mapOf(name,name,url,browser_download_url).merge()).merge()' > releases_download.yaml
less releases_download.yaml
# Restructure the above data into CSV format, destructuring into rows.
dasel -f releases_download.yaml -w csv 'all().download.all().mapOf(version,parent(2).version,name,name,url,url).merge()' > releases_download.csv
less releases_download.csv
# Fetch the first CSV row and output as JSON
dasel -f releases_download.csv -w json 'first()'">
# Piping data into dasel echo ' {"demo": "Integrating with github releases..."} ' | dasel -r json ' demo ' # Fetch dasel releases from github api curl -L -H " Accept: application/vnd.github+json " -H " X-GitHub-Api-Version: 2022-11-28 " https://api.*git**hub.com/repos/TomWright/dasel/releases > releases.json less releases.json # Extract and structure release data by version with download URL's by asset name dasel -f releases.json -w yaml ' all().mapOf(version,tag_name,download,assets.all().mapOf(name,name,url,browser_download_url).merge()).merge() ' > releases_download.yaml less releases_download.yaml # Restructure the above data into CSV format, destructuring into rows. dasel -f releases_download.yaml -w csv ' all().download.all().mapOf(version,parent(2).version,name,name,url,url).merge() ' > releases_download.csv less releases_download.csv # Fetch the first CSV row and output as JSON dasel -f releases_download.csv -w json ' first() '
目录
- dasel
- 统治所有人的一种工具
- Quickstart
- 完成
- 问题与讨论
- 特征
- 目录
- 文档
- 操场
- 基准
- 预警
Quickstart
dasel可在最新版本中的Homebrew,ASDF,Scoop,Docker,Nix,Nix,Nix,Nix,Nix,Nix,Nix或AS AS汇编的二进制文件上找到。
brew install dasel您也可以使用以下方式安装开发版本
dasel @master">
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 ,然后重新加载您的终端。
dasel
compinit">
export fpath=(~/zsh/site-functions $fpath ) mkdir -p ~ /zsh/site-functions dasel completion zsh > ~ /zsh/site-functions/_ dasel compinit
预警
将dasel钩子添加到.pre-commit-config.yaml文件
- repo : https://g**ithub*.com/TomWright/dasel
rev : v1.25.1
hooks :
- id : dasel -validate用于dasel的本机执行,或使用:
- dasel-使用官方Docker Images执行dasel
dasel -validate-docker预先承诺挂钩 - dasel-使用官方二进制文件执行dasel
dasel -validate-bin预加入挂钩
问题与讨论
我启用了有关此存储库的讨论。
我知道在决定问题时应在哪里交流,提出问题或提出功能请求时可能会有一些混乱,因此本节旨在帮助我们对此保持一致。
如果以下情况,请提出一个问题
- 您找到一个错误。
- 您有一个功能请求,可以清楚地描述您的请求。
如果:
- 你有一个问题。
- 您不确定如何使用dasel实现目标。
- 您有一个主意,但不太知道您希望它如何工作。
- 您已经与dasel取得了很酷的成就,并想炫耀它。
- 还要别的吗!
特征
- 查询/从结构化数据文件中选择数据。
- 在结构化数据文件中更新数据。
- 创建数据文件。
- 支持多种数据格式/类型。
- 在数据格式/类型之间转换。
- 在所有数据格式上使用标准查询/选择器语法。
- 零运行时依赖关系。
- 在Linux,Mac和Windows上可用。
- 可用于您自己的项目进口和使用。
- 通过Docker运行。
- 比JQ/YQ快。
- 预先承诺的钩子。
文档
dasel官方文档可以在dasel Docs.tomwright.me上找到。
操场
您可以使用操场测试dasel命令。
可以在github.com/tomwright/ dasel Playground上找到操场的源代码。
基准
在我的测试中, dasel速度比JQ快3倍,比YQ快15倍。
请参阅基准目录。
随着时间的流逝,观星者
下载源码
通过命令行克隆项目:
git clone https://github.com/TomWright/dasel.git