如何用JQ将Map转为空格分隔的-var="key=value"格式字符串?
使用JQ将JSON对象转换为空格分隔的
-var="key=value"格式字符串 需求说明
输入JSON对象:
{ "foo": "bar", "baz": "qux" }
需要转换为:
-var="foo=bar" -var="baz=qux"
解决方案
你只需要在现有逻辑基础上,用map()生成目标字符串数组,再通过join(" ")将数组元素用空格连接即可,完整命令如下:
jq -r 'to_entries | map("-var=\"\(.key)=\(.value)\"") | join(" ")'
命令解释
to_entries:将输入的JSON对象转换为包含键值对的数组,格式为[{"key":"foo","value":"bar"}, {"key":"baz","value":"qux"}]map("-var=\"\(.key)=\(.value)\""):遍历数组中的每个元素,生成对应的-var="key=value"格式字符串,得到数组["-var=\"foo=bar\"", "-var=\"baz=qux\""]join(" "):将数组中的所有字符串用空格连接成单行结果
执行效果
执行上述命令后,会直接输出你需要的单行格式:
-var="foo=bar" -var="baz=qux"
内容的提问来源于stack exchange,提问作者Jordan
相关产品推荐
相关产品推荐

