У меня есть один файл в формате Json, как показано ниже:
{
"sources":[{
"field1":1000,
"field2":"winevent_log",
"field3":"winevent_log",
"field4":"os_security",
"field5":true,
"field6":false,
},{
"field1":1001,
"field2":"winperf_cpu",
"field3":"winperf_cpu",
"field4":"os_perf",
"field5":false,
"field6":false,
},{
"field1":1002,
"field2":"winperf_disk",
"field3":"winperf_disk",
"field4":"os_perf",
"field5":false,
"field6":false,
},{
"field1":1003,
"field2":"winperf_mem",
"field3":"winperf_mem",
"field4":"OS_perf",
"field5":false,
"field6":false,
}
}
Я пытаюсь разбить его на разные файлы на основе разделителя. Я хотел бы видеть 4 разных файла, как показано ниже:
файл 1:
{
"field1":1000,
"field2":"winevent_log",
"field3":"winevent_log",
"field4":"os_security",
"field5":true,
"field6":false,
}
файл 2:
{
"field1":1001,
"field2":"winperf_cpu",
"field3":"winperf_cpu",
"field4":"os_perf",
"field5":false,
"field6":false,
}
И так далее.
Я попытался с помощью команд csplit и awk:
csplit input_file '/"id"/' '{*}'
awk '/,{/{n++}{print >"out" n ".json" }' input_file
Но я не получил выходные_файлы так, как я ожидал, потому что разделитель разбит на несколько строк и начинается в середине одной строки.
Кто-нибудь знает, как использовать awk или csplit таким образом, чтобы начальный разделитель был "{newline" field1 "", а конечный разделитель - "},"