[英]Convert text file with key=value pair to specific json format in jq
我在 input.txt 中有一個包含以下值的文本文件
key1=value1\r
key2=value2
key3=value3\r
key4=value4
需要 jq rexpression 通過刪除“\\r”也將其轉換為以下 json 格式
輸出.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 -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 -n -R -f program.jq input.txt
程序.jq:
[inputs | sub("\\\\r$";"") | capture("^(?<key>[^=]*)=(?<value>.*)")]
| from_entries
| {Environment: { Variables: .}}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.