У меня есть вывод JSON в следующем формате:
{
"DaysCfg": {
"Range": {
"lowerDate": "2017-07-28T00:00:00.000-04:00",
"upperDate": "2017-08-04T00:00:00.000-04:00"
},
"DaysInPeriod": 8,
"DaysToSchedule": [
0,
1,
2,
3,
4,
5,
6
]
},
"DepartmentsID": [
138837,
139734,
141934,
142436,
149687,
151049
],
"EmployeesID": [
5039,
5170,
5889,
6051,
6236,
7208,
7281,
8776,
8781,
8936,
9261
],
"EndDate": "2017-08-03T23:59:00.000-04:00",
"IntervalSize": 15,
"IsActivitiesEnabled": true,
"ModifyExisting": false,
"OrignId": 134721,
"PrimaryOption": 0,
"SchoolDays": [],
"ScChanges": [],
"StartDate": "2017-07-28T00:00:00.000-04:00",
"ZonesToSchedule": [
5,
4,
6,
3,
3,
3,
2,
14
]
}
Поскольку я не могу изменить программу, которая ее выводит, я должен использовать sed
(или awk
) для сжатия JSON-массивов самостоятельно. Желаемый результат будет:
{
"DaysCfg": {
"Range": {
"lowerDate": "2017-07-28T00:00:00.000-04:00",
"upperDate": "2017-08-04T00:00:00.000-04:00"
},
"DaysInPeriod": 8,
"DaysToSchedule": [0, 1, 2, 3, 4, 5, 6]
},
"DepartmentsID": [138837, 139734, 141934, 142436, 149687, 151049],
"EmployeesID": [5039, 5170, 5889, 6051, 6236, 7208, 7281, 8776, 8781, 8936, 9261],
"EndDate": "2017-08-03T23:59:00.000-04:00",
"IntervalSize": 15,
"IsActivitiesEnabled": true,
"ModifyExisting": false,
"OrignId": 134721,
"PrimaryOption": 0,
"SchoolDays": [],
"ScChanges": [],
"StartDate": "2017-07-28T00:00:00.000-04:00",
"ZonesToSchedule": [5, 4, 6, 3, 3, 3, 2, 14]
}
Я сам пытался придумать сценарий sed
, но он только наполовину приготовлен и работает не полностью:
sed -r -e :a -e '/^ *[]}],*$/!N; /": \[/s/\n +//; ta' -e 'P;D'
Пожалуйста помоги. Спасибо.