У меня есть вывод JSON, сгенерированный как часть команды curl, и я хочу разделить результирующий файл на основе шаблона:
Содержимое файла выглядит примерно так:
{
"clusters" : [ {
"name" : "subject",
"version" : "XXX",
"services" : [ {
"name" : "initiator",
"config" : {
"items" : [ {
"name" : "enableSecurity",
"value" : "true",
"sensitive" : false
}, {
"name" : "service_config_suppression_server_count_validator",
"value" : "true",
"sensitive" : false
} ]
},
"roles" : [ {
"name" : "intiator-role1",
"type" : "SERVER",
"hostRef" : {
"hostId" : "754389-8989db-8743ty"
},
"config" : {
"items" : [ {
"name" : "role_creds",
"value" : "sdfujnvhdsg87909",
"sensitive" : true
}, {
"name" : "serverId",
"value" : "1",
"sensitive" : false
} ]
},
"roleConfigGroupRef" : {
"roleConfigGroupName" : "initiator-group"
}
} ]
} ]
},
....bunch of lines in between
..........
{
"name" : "subject2",
"version" : "XXX",
"services" : [ {
"name" : "ingestor",
"config" : {
"items" : [ ]
},
"roles" : [ {
"name" : "ingestor-role1",
"type" : "service",
"hostRef" : {
"hostId" : "754389-8989db-8743ty"
},
"config" : {
"items" : [ {
"name" : "role_code",
"value" : "sdfujnvhdsg67340",
"sensitive" : true
} ]
},
"roleConfigGroupRef" : {
"roleConfigGroupName" : "ingestor-group"
}
} ]
} ]
}
]
}
Я хочу разбить этот файл на разные файлы всякий раз, когда повторяется строка «версия»: «ХХХ». Таким образом, этот сгенерированный файл должен иметь содержимое, начинающееся с первых двух строк перед строкой до следующего появления строки.
Это просто выдержка из огромного файла json, в этом наборе данных я сохранил только два строковых шаблона, поэтому ожидаю два файла со следующим содержанием:
файл 1 должен иметь:
"clusters" : [ {
"name" : "subject",
"version" : "XXX",
"services" : [ {
"name" : "initiator",
"config" : {
"items" : [ {
"name" : "enableSecurity",
"value" : "true",
"sensitive" : false
}, {
"name" : "service_config_suppression_server_count_validator",
"value" : "true",
"sensitive" : false
} ]
},
"roles" : [ {
"name" : "intiator-role1",
"type" : "SERVER",
"hostRef" : {
"hostId" : "754389-8989db-8743ty"
},
"config" : {
"items" : [ {
"name" : "role_creds",
"value" : "sdfujnvhdsg87909",
"sensitive" : true
}, {
"name" : "serverId",
"value" : "1",
"sensitive" : false
} ]
},
"roleConfigGroupRef" : {
"roleConfigGroupName" : "initiator-group"
}
} ]
} ]
},
....bunch of lines in between
..........
и файл 2 должен иметь
{
"name" : "subject2",
"version" : "XXX",
"services" : [ {
"name" : "ingestor",
"config" : {
"items" : [ ]
},
"roles" : [ {
"name" : "ingestor-role1",
"type" : "service",
"hostRef" : {
"hostId" : "754389-8989db-8743ty"
},
"config" : {
"items" : [ {
"name" : "role_code",
"value" : "sdfujnvhdsg67340",
"sensitive" : true
} ]
},
"roleConfigGroupRef" : {
"roleConfigGroupName" : "ingestor-group"
}
} ]
} ]
}
]
}
Хотите достичь этого с помощью bash, желательно awk, заранее.