mcpField
D
Dasel

Dasel

官方Agent-ready
github.com数据库与数据8.1kdasel2 周前更新
代码仓库访问官网

关于 Dasel

Dasel 是处理结构化数据的命令行工具,命令为 dasel。通过 -f 指定文件并用选择器读取字段,也可用 put 写入带类型的值,输入输出便于接入管道。

主要功能

  1. 01用 dasel -f config.yml ".server.port" 读取字段
  2. 02用 dasel put 写入值并以 -t int 指定类型
  3. 03支持 YAML、JSON 等配置文件
  4. 04适合管道的输入与输出
  5. 05可重复执行的数据处理

适用场景

  1. 01在脚本中读取配置里的端口号
  2. 02把 config.json 的 port 改为 3000
  3. 03编码 Agent 跨格式统一修改配置

安装

选择你的系统或包管理器,复制命令到终端运行。

$
brew install dasel

安装完成后运行dasel --version确认安装成功。

命令示例

常用命令按使用顺序排列。

01
dasel -f config.yml ".server.port"
02
dasel put -f config.json -t int ".port" 3000

详细介绍

Gitbook Go Report Card PkgGoDev Test Build codecov Mentioned in Awesome Go GitHub Downloads Homebrew Formula Downloads GitHub License GitHub tag (latest by date) Homebrew tag (latest by date)

Dasel 吉祥物

Dasel

Dasel(Data-Select 的简称)是一款命令行工具和库,可用于查询、修改和转换 JSON、YAML、TOML、XML、CSV 和 KDL 等数据结构。

它提供一致且强大的语法来遍历和更新数据,适用于开发人员、DevOps 和数据整理任务。


功能

  • 多格式支持:JSON、YAML、TOML、XML、CSV、HCL、INI、KDL。
  • 统一查询语法:使用相同的选择器访问任何格式的数据。
  • 查询和搜索:使用直观的语法提取值、列表或结构。
  • 原地修改:直接更新、插入或删除结构化文件中的值。
  • 格式转换:轻松将数据从 JSON 转换为 YAML、从 TOML 转换为 JSON 等。
  • 适合脚本使用:可轻松集成到 shell 脚本和管道中。
  • 库支持:可在 Go 项目中导入和使用。

安装

Homebrew(macOS/Linux)
brew install dasel
Go 安装
go install github.com/tomwright/dasel/v3/cmd/dasel@master
预编译二进制文件

Linux、macOS 和 Windows 的预编译二进制文件可在 Releases 页面获取。

以上方式都不适用?

如需了解其他选项,请参阅安装文档。


Shell 补全

Dasel 支持 Bash、Zsh、Fish 和 PowerShell 的制表符补全。为你的 shell 生成并加载补全脚本:

# Bash
source <(dasel completion bash)

# Zsh
source <(dasel completion zsh)

# Fish
dasel completion fish | source

# PowerShell
dasel completion powershell | Out-String | Invoke-Expression

如需永久安装说明,请参阅 shell 补全文档。

Man 页面

生成并查看 man 页面:

dasel man | man -l -

基本用法

选择值

默认情况下,Dasel 会计算最后一个选择器并打印结果。

echo '{"foo": {"bar": "baz"}}' | dasel -i json 'foo.bar'
# Output: "baz"
修改值

就地更新值:

echo '{"foo": {"bar": "baz"}}' | dasel -i json 'foo.bar = "bong"'
# Output: "bong"

使用 --root 在修改后输出完整文档:

echo '{"foo": {"bar": "baz"}}' | dasel -i json --root 'foo.bar = "bong"'
# Output:
{
  "foo": {
    "bar": "bong"
  }
}

根据之前的值更新值:

echo '[1,2,3,4,5]' | dasel -i json --root 'each($this = $this*2)'
# Output:
[
    2,
    4,
    6,
    8,
    10
]
格式转换
cat data.json | dasel -i json -o yaml
递归下降(..)

搜索所有嵌套对象和数组,查找匹配的键或索引。

echo '{"foo": {"bar": "baz"}}' | dasel -i json '..bar'
# Output:
[
    "baz"
]

搜索(search)

在结构中的任意位置查找所有符合条件的值。

echo '{"foo": {"bar": "baz"}}' | dasel -i json 'search(bar == "baz")'
# Output:
[
    {
        "bar": "baz"
    }
]


文档

完整文档请访问 daseldocs.tomwright.me。


贡献

欢迎贡献!详情请参阅 CONTRIBUTING.md。


许可证

MIT 许可证。详情请参阅 LICENSE。

Stargazers 随时间变化

Stargazers 随时间变化

评论

支持 Markdown