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
有关更多信息,请参见安装文档。
选择
dasel -r json \’name\’
\”Tom\”\”>
echo \' {\"name\": \"Tom\"} \' | dasel -r json \' name \' \" Tom \"
请参阅选择文档。
将json转换为yaml
dasel -r json -w yaml
name: Tom\”>
echo \' {\"name\": \"Tom\"} \' | dasel -r json -w yaml name: Tom
请参阅选择文档。
放
dasel put -r json -t string -v \’contact@tomwright.me\’ \’email\’
{
\”email\”: \”contact@tomwright.me\”,
\”name\”: \”Tom\”
}\”>
echo \' {\"name\": \"Tom\"} \' | dasel put -r json -t string -v \' contact@tomwright.me \' \' email \' { \" email \" : \" contact@tomwright.me \" , \" name \" : \" Tom \" }
请参阅放置文档。
删除
dasel delete -r json \’.email\’
{
\”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倍。
请参阅基准目录。
