将具有key = value对的文本文件转换为jq中的特定json格式
我在input.txt中有一个具有以下值的文本文件
key1=value1\rkey2=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