Я пытаюсь разбить большой файл JSON (~ 4 элемента Mio) на отдельные файлы (один файл на элемент).
Файл выглядит примерно так:
{
"books": [
{
"title": "Professional JavaScript - \"The best guide\"",
"authors": [
"Nicholas C. Zakas"
],
"edition": 3,
"year": 2011
},
{
"title": "Professional JavaScript",
"authors": [
"Nicholas C.Zakas"
],
"edition": 2,
"year": 2009
},
{
"title": "Professional Ajax",
"authors": [
"Nicholas C. Zakas",
"Jeremy McPeak",
"Joe Fawcett"
],
"edition": 2,
"year": 2008
}
]
}
Чтобы разделить каждую книгу на отдельный файл, я использую следующую команду:
cat books.json | jq -c -M '.books[]' | while read line; do echo $line > temp/$(date +%s%N).json; done
С двумя последними элементами все в порядке, потому что название книги не содержит кавычек. Однако в первом случае \"
заменяется на "
, что приводит к повреждению файла JSON, поскольку последующий синтаксический анализатор - разумеется - интерпретирует "
как границу элемента.
Я пытался использовать jq -r
, но это не помогло.
Я использую версию jq, поставляемую CentOS 7:
[root@machine]$ jq --version
jq-1.6
Есть предложения?