22 个版本 (11 个重大更新)
新 0.19.2 | 2024年8月17日 |
---|---|
0.19.1 | 2024年7月26日 |
0.19.0 | 2024年2月5日 |
0.18.3 | 2023年12月24日 |
0.10.0 | 2022年6月13日 |
#535 in 解析实现
每月下载量 293
145KB
3K SLoC
xt
xt 是一个跨格式翻译器,用于 JSON、YAML、TOML 和 MessagePack。
例如,您可以使用 jq
处理一组 TOML 文件
$ xt a/Cargo.lock b/Cargo.lock | jq -r '.package[].name' | sort -u
aho-corasick
anes
autocfg
# etc.
或者将 JSON 配置文件转换为 YAML 以便于编辑
$ xt -t yaml config.json > config.yaml
或者将无界 JSON 事件流存储为 MessagePack 以节省空间
$ curl localhost:8001/apis/events.k8s.io/v1/events?watch | xt -tm > events.msgpack
安装
xt 使用 Rust 构建,并利用强大的 Serde 数据序列化和反序列化库生态系统。
在您的系统上安装 Rust 后,您可以使用 Cargo 从 crates.io 安装 xt
cargo install --locked xt
NetBSD
在 NetBSD 上,可以从官方仓库获取预编译的二进制文件。要安装它,只需运行
pkgin install xt-rs
使用方法和功能
xt [-f format] [-t format] [file ...]
或者,运行 xt --help
以获取完整的用法信息。
xt 设计为“做好一件事”,并尝试保持最小的接口和功能集。最常用的选项是 -t
指定除 JSON 之外的其他输出格式,以及要读取而不是标准输入的一个或多个文件。
xt 的一些显著功能包括
自动格式检测
当没有使用 -f
选项指定输入格式时,xt 可以通过文件扩展名或检查输入流的内容自动检测它。
多文档支持
大多数输出格式下,xt可以将包含一个或多个独立文档的多个输入文件翻译成一个单一的输出流。例如,一组使用---
标记分隔文档的YAML文件可以翻译成一个以换行符分隔的JSON对象流。启用格式检测后,xt甚至可以将不同格式的输入文件翻译成一个单一的输出。
流式翻译
xt可以以最小的缓冲区从shell管道等无界源中翻译多文档输入,同时仍然支持自动格式检测等特性。在需要时,流式传输会自动启用。
许可证
xt在MIT许可证的条款下发布。有关更多信息,请参阅LICENSE.txt
。
依赖关系
~2.6–3.5MB
~70K SLoC