yq:命令行下的 YAML 和 JSON 处理利器

文章目录

yq:命令行下的 YAML 和 JSON 处理利器

yq 在 GitHub 上已经拿到 15,653 Star。

它是一个轻量级的命令行 YAML、JSON、INI 和 XML 处理器,用 Go 编写,编译后只有一个独立二进制文件,无需任何依赖。它的语法和 JSON 处理器 jq 一致,但原生支持 YAML、XML、CSV、TSV 等格式。

1、这玩意儿是干嘛的

一句话:用 jq 的语法处理 YAML 和更多格式的文件。

jq 专精 JSON,yq 则把同样的过滤和转换能力扩展到了 YAML、XML、INI、Properties、CSV、TSV、TOML、HCL、Lua 等格式。不管是读值、更新、合并还是格式转换,一条命令搞定。

2、基本用法

读一个值:

bash 复制代码
yq '.a.b[0].c' file.yaml

管道输入:

bash 复制代码
yq '.a.b[0].c' < file.yaml

原地更新:

bash 复制代码
yq -i '.a.b[0].c = "cool"' file.yaml

通过环境变量更新:

bash 复制代码
NAME=mike yq -i '.a.b[0].c = strenv(NAME)' file.yaml

3、进阶操作

合并多个文件:

bash 复制代码
yq -n 'load("file1.yaml") * load("file2.yaml")'

用通配符合并:

bash 复制代码
yq ea '. as $item ireduce ({}; . * $item )' path/to/*.yml

在数组中查找并更新:

bash 复制代码
yq -i '(.[] | select(.name == "foo") | .address) = "12 cat st"' data.yaml

格式互转:

bash 复制代码
yq -Poy sample.json
yq -o json file.yaml
yq -o yaml file.xml

4、安装方式

编译好的二进制文件可以直接下载,支持 Linux、macOS、Windows、ARM 等平台。

bash 复制代码
# 下载最新版 Linux AMD64
wget https://github.com/mikefarah/yq/releases/latest/download/yq_linux_amd64 -O /usr/local/bin/yq && chmod +x /usr/local/bin/yq

Homebrew 安装:

bash 复制代码
brew install yq

Go 安装:

bash 复制代码
go install github.com/mikefarah/yq/v4@latest

Docker 运行:

bash 复制代码
docker run --rm -v "${PWD}":/workdir mikefarah/yq '.a.b[0].c' file.yaml

Windows 用户可以用 Chocolatey 或 scoop:

bash 复制代码
choco install yq
scoop install main/yq

5、主要特性

  • 语法和 jq 一致,学习成本低
  • 支持多文档 YAML 和 front matter
  • 彩色输出,方便阅读
  • 日期时间处理和格式化
  • 保留 YAML 注释和格式
  • 支持 base64 编解码
  • 从其他文件加载内容
  • 支持 shell 补全脚本
  • reduce 操作,可合并多个文件或对数组求和

6、适合谁用

经常需要在命令行处理 YAML、JSON、配置文件、CI 配置、Kubernetes manifest 的开发和运维人员。jq 用户可以直接上手,不需要重新学习新语法。

e 操作,可合并多个文件或对数组求和

6、适合谁用

经常需要在命令行处理 YAML、JSON、配置文件、CI 配置、Kubernetes manifest 的开发和运维人员。jq 用户可以直接上手,不需要重新学习新语法。

相关推荐
果果了不起4 小时前
JumpServer:开源堡垒机的实用之选
其他·开源
淡漠的蓝精灵6 小时前
web.py:一个简单到极致的 Python Web 框架
开发语言·前端·python·其他
ByteBeacon8 小时前
Vensim安装包下载Vensim PLE 7.3.5 安装教程(图文步骤)
其他
deltadev11 小时前
Android Studio安装包下载2026 安装教程(图文步骤)
其他
matrixcode111 小时前
Orama:一个把全文搜索做成艺术品的开源搜索引擎
其他·搜索引擎·开源
matrixcode111 小时前
Artillery:给服务端做压测的老牌工具
其他
syntaxsage12 小时前
searx:隐私优先的元搜索引擎,宣布停止维护
其他·搜索引擎
小王R语言学习13 小时前
PaddleNLP:基于飞桨的大模型开发套件
人工智能·其他·paddlepaddle
kk_net889913 小时前
FSNotes:macOS 和 iOS 上的开源笔记管理器
笔记·其他·macos·ios