Eu tenho um arquivo que está no formato Json, como abaixo:
{
"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,
}
}
Estou tentando dividi-lo em arquivos diferentes com base no delimitador. Eu gostaria de ver quatro arquivos diferentes, como abaixo:
arquivo 1:
{
"field1":1000,
"field2":"winevent_log",
"field3":"winevent_log",
"field4":"os_security",
"field5":true,
"field6":false,
}
arquivo 2:
{
"field1":1001,
"field2":"winperf_cpu",
"field3":"winperf_cpu",
"field4":"os_perf",
"field5":false,
"field6":false,
}
E assim por diante e assim por diante.
Eu tentei usar os comandos csplit e awk:
csplit input_file '/"id"/' '{*}'
awk '/,{/{n++}{print >"out" n ".json" }' input_file
Mas não obtive os output_files da maneira que eu esperava, porque o delimitador é distribuído em várias linhas e começa no meio de uma linha.
Alguém sabe como usar awk ou csplit de tal forma que o delimitador inicial seja "{newline" field1 "" enquanto o delimitador final é "}",