yq 是一个轻量级和便携式的命令行 YAML、JSON 和 XML 处理器。yq 使用类似于 jq 的语法,但可以处理 yaml、json、xml、properties、csv 和 tsv 文件。它目前还不支持 jq 支持的所有功能,但它支持最常见的操作和函数,并且还在不断添加更多功能。以下将讲解如何在Ceotos安装yq。

yq官方源码地址:

https://github.com/mikefarah/yq

yq官方下载地址:

https://github.com/mikefarah/yq/releases/tag/v4.33.2

下载yq_linux_amd64

yq安装步骤

1
2
3
4
chmod 744 yq_linux_amd64
mv yq_linux_amd64 /usr/bin/
ln -s /usr/bin/yq_linux_amd64 /usr/bin/yq
yq -V

yq的使用

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
#直接读取
yq '.a.b[0].c' file.yaml

#输入流管道读取
yq '.a.b[0].c' < file.yaml

#cat读取,并打印key、value
cat app-config-env.yaml | yq -o=json .data  |   jq -r 'to_entries[] | "key: \(.key), value: \(.value)"'

#cat读取,并打印docker run的-e
cat app-config-env.yaml | yq -o=json .data  |   jq -r 'to_entries[] | "-e  \(.key)=\"\(.value)\""'

#cat读取,并打印docker run的-e换行
cat app-config-env.yaml | yq -o=json .data | jq -r 'to_entries[] | "-e \(.key)=\(.value | @sh)"' | tr '\n' ' '

#cat读取,并打印docker run的--add-host
cat app-config-host.yaml | yq -o=json .data | jq -r 'to_entries[] | "--add-host='\''\(.key):\(.value)'\''"' | tr '\n' ' '