У меня есть большой файл в формате JSON объектов (более 12000 строк), который выглядит как:расщепление большого файла JSON и установив имя выходного файла
{
"System": "2334",
"Id": "AP64531346-2016055553824",
"dtis": "106165099",
"Type": "Up",
... (in total, 112 lines per record)
}
{
"System": "873",
"Id": "AP24531346-20160676553824",
"dtis": "1261699",
"Type": "Up",
... (in total, 112 lines per record)
}
Я хочу, чтобы разделить большой файл в небольшой каждый из них имеет один вход (112 строк) и устанавливает имя каждой части как значение «Id», я имею в виду, например, AP64531346-2016055553824.txt и AP24531346-20160676553824 соответственно.
Я попытался с разделом GNU, но я не могу установить имя каждого файла как идентификатор плюс .txt.
split -l 112 ../bigfile.csv
Любое предложение?
Обратите внимание, что это приведет к тому, что ключи данных будут выдаваться в другом порядке, чем оригинал. Если данные на самом деле описаны так, это может быть лучше '$/=" \ n} \ n "; while (my $ record = <>) {my $ id = $ json-> decode ($ record) -> {Id}; открыть (my $ fh, ...) или умереть; print $ fh $ record} '(только при проверке ошибок) – ysth
@ysth, Правильно, но порядок клавиш в JSON не имеет смысла. Что касается остальной части комментария, почему бы вам не опубликовать его как ответ? – ikegami
казался слишком мало отличающимся от вашего – ysth