我在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 解:
jq
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" } } }
此解决方案假定=未出现在输入字符串的“值”部分中。
=