yq 是一个轻量级且便携的命令行 YAML、JSON 和 XML 处理器。它使用类似于 jq 的语法,但可以处理 yaml 文件以及 json、xml、properties、csv 和 tsv。它尚未支持 jq 的所有功能,但它支持最常用的操作和函数,并且不断添加更多功能。¹
下面是一些 yq 的使用示例:
yq '.a.b [0].c' file.yaml
yq '.a.b [0].c' < file.yaml
yq -i '.a.b [0].c = \"cool\"' file.yaml
NAME=mike yq -i '.a.b [0].c = strenv (NAME)' file.yaml
yq ea '. as $item ireduce ( {}; . * $item )' path/to/ * .yml
yq -i ' .a.b [0].c = \"cool\" | .x.y.z = \"foobar\" | .person.name = strenv (NAME) ' file.yaml
cat file.json | yq -P e - > file.yaml
您可以使用 yq 的 select
操作符来查找特定的值。例如,让我们在 YAML 文件中查找 ‘Foo’:yq '. [] | select (. == \"Foo\")' personal_data.yaml
。请注意,使用管道运算符 |
将根节点的值传递给 select
操作符。
您还可以使用通配符 *
来查找以特定字符串开头的所有值。例如,让我们在 street_address 节点中查找所有以 ‘My’ 开头的值:yq '.street_address [] | select (. == \"My*\")' personal_data.yaml
。
yq e -i 'select(.kind == "Deployment").metadata.namespace = "zxl-system"' operator.yaml