dasel

Delphi源码 2025-08-17

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