如何使用yq对YAML中键的数值执行常量除法?
在yq中实现数值除法的正确方式
问题场景
现有输入YAML(单位为MB):
a: 2048
需要转换为GB单位,期望输出:
2
执行以下命令时触发错误:
echo "a: 2048" | yq eval '.a / 1024' -
错误提示:
Error: 1:4: invalid input text "/ 1024"
解决方法
错误源于yq版本的语法差异,针对主流的mikefarah/yq工具,分版本给出正确写法:
1. yq v4及以上版本
直接使用算术运算符即可,命令可简化(省略eval参数):
echo "a: 2048" | yq '.a / 1024' -
或保留eval的标准写法:
echo "a: 2048" | yq eval '.a / 1024' -
2. yq v3版本
v3版本需要将算术运算表达式用括号包裹,确保yq正确解析:
echo "a: 2048" | yq eval '(.a / 1024)' -
验证版本
若不确定自己使用的yq版本,可执行以下命令查看:
yq --version
内容的提问来源于stack exchange,提问作者Gabriel Petrovay
相关产品推荐
相关产品推荐

