我有一个代码,正在以以下格式将输出写入文件。
Application-Id : application_xxxx_xxxx
Application-Name : hive-job
Application-Type : MAPREDUCE
User : mapr
Queue : xdev
Start-Time : 1234567
Finish-Time : 1234567
Progress : 0%
State : FAILED
Final-State : FAILED
Tracking-URL : N/A
RPC Port : -1
AM Host : N/A
Aggregate Resource Allocation : 0 MB-seconds, 0 vcore-seconds
Diagnostics : Application rejected by queue placement policy
我需要将以上数据转换为json格式。
答案 0 :(得分:0)
这是一个jq解决方案,假设您要创建JSON对象:
jq -Rn '[inputs | capture("(?<key>[^ ]*) : (?<value>.*)") ] | from_entries' input.txt
当然,您可能需要对此进行调整,例如处理尾随的空白等。
jq的一个小优点是,如果产生任何输出,则可以保证输出为有效的JSON。
使用给定的输入,输出将是:
{
"Application-Id": "application_xxxx_xxxx",
"Application-Name": "hive-job",
"Application-Type": "MAPREDUCE",
"User": "mapr",
"Queue": "xdev",
"Start-Time": "1234567",
"Finish-Time": "1234567",
"Progress": "0%",
"State": "FAILED",
"Final-State": "FAILED",
"Tracking-URL": "N/A",
"Port": "-1",
"Host": "N/A",
"Allocation": "0 MB-seconds, 0 vcore-seconds",
"Diagnostics": "Application rejected by queue placement policy"
}