要将两个字符串(例如[“ k”,“ v”])的数组转换为对象,可以编写:
{ (.[0]) : .[1] }因此,您需要编写类似以下内容的内容:
map(.Config.Env |= (map( split("=") | { (.[0]) : .[1] } ) | add))2点
抽象出数组到对象的功能使解决方案更易于理解:
def a2o: map( split("=") | { (.[0]) : .[1] } ) | add;map(.Config.Env |= a2o)使用match
或capture
代替split
由于可能在每个
var=value字符串的“值”部分出现“
=”字符,因此
split天真地使用可能不是一个好主意。假设您的jq支持正则表达式,这是一个更可靠的选择:
match("([^=]*)=(.*)") | .captures | {(.[0].string) : .[1].string}或者,更简洁一些,也可能更优雅一些:
[capture( "(?<key>[^:]*):(?<value>.*)" )] | from_entries
index/1
如果您的jq不支持正则表达式,则可以
index/1按照以下方式使用:
index("=") as $ix | {(.[:$ix]) : .[$ix+1:]}


