当前位置: 首页 > 面试题库 >

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

阳光辉
2023-03-14
问题内容

我在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 -sR '{"Environment":
            {"Variables": [split("\n")[:-1][] | rtrimstr("\\r") 
                             | split("=") | {(.[0]): .[1]}
                          ]  | add
            }
        }' input.txt

输出:

{
  "Environment": {
    "Variables": {
      "key1": "value1",
      "key2": "value2",
      "key3": "value3",
      "key4": "value4"
    }
  }
}

警告

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



 类似资料: