yq是一个轻量级且便携的命令行工具 🛠️,专门用于处理YAML、JSON和XML文件。它使用类似于jq的语法,支持yaml、json、xml、properties、csv和tsv等多种文件格式。
主要特点:
- 📝 支持多种数据格式
- 🔧 类似jq的语法
- ⚡ 轻量级且高效
- 🔄 持续更新功能
📥 下载yq
官方源码: https://github.com/mikefarah/yq
下载地址: https://github.com/mikefarah/yq/releases
选择适合的版本,下载 yq_linux_amd64
文件。
🚀 安装步骤
# 添加执行权限
chmod 744 yq_linux_amd64
# 移动到系统目录
mv yq_linux_amd64 /usr/bin/
# 创建软链接
ln -s /usr/bin/yq_linux_amd64 /usr/bin/yq
# 验证安装
yq -V
📖 使用示例
基本读取操作
直接读取文件:
yq '.a.b[0].c' file.yaml
管道读取:
yq '.a.b[0].c' < file.yaml
高级用法示例
读取并打印键值对:
cat app-config-env.yaml | yq -o=json .data | jq -r 'to_entries[] | "key: \(.key), value: \(.value)"'
生成Docker环境变量:
cat app-config-env.yaml | yq -o=json .data | jq -r 'to_entries[] | "-e \(.key)=\"\(.value)\""'
生成Docker环境变量(单行):
cat app-config-env.yaml | yq -o=json .data | jq -r 'to_entries[] | "-e \(.key)=\(.value | @sh)"' | tr '\n' ' '
生成Docker主机映射:
cat app-config-host.yaml | yq -o=json .data | jq -r 'to_entries[] | "--add-host='\''\(.key):\(.value)'\''"' | tr '\n' ' '
💡 提示: yq可以与jq结合使用,实现更复杂的数据处理需求。建议先熟悉基本语法,再尝试复杂操作。