将具有key = value对的文本文件转换为jq中的特定json格式

我在input.txt中有一个具有以下值的文本文件

key1=value1\r

key2=value2

key3=value3\r

key4=value4

需要jq rexpression通过删除“ \ r”将其转换为以下json格式

output.json

{

"Environment": {

"Variables": {

"key1": "value1",

"key2": "value2",

"key3": "value3",

"key4": "value4"

}

}

}

我试过下面的表达式并得到

jq -Rs [ split("\n")[] | select(length > 0) | split("=") | {(.[0]): .[1]} ]

并获得以下输出

[

{

"key1ey1": "Value1\r"

},

{

"key2": "value2"

},

{

"key3": "value3\r"

},

{

"key4": "value4"

}

]

回答:

解:

jq -sR '{"Environment":

{"Variables": [split("\n")[:-1][] | rtrimstr("\\r")

| split("=") | {(.[0]): .[1]}

] | add

}

}' input.txt

输出:

{

"Environment": {

"Variables": {

"key1": "value1",

"key2": "value2",

"key3": "value3",

"key4": "value4"

}

}

}

回答:

此解决方案假定=未出现在输入字符串的“值”部分中。

以上是 将具有key = value对的文本文件转换为jq中的特定json格式 的全部内容, 来源链接: utcz.com/qa/429758.html

回到顶部