Некоторые люди отформатируют свои файлы JSON, где все основные элементы данных находятся внутри массива. Я хочу, чтобы элементы массива были объектами json.Как заменить диапазон шаблонов с помощью awk или sed
Другими словами ... Я хочу, чтобы принимать какие-либо общий текстовый файл так:
{ "продукты": [{ "fgid": "Ф.", "fgcat_id": "1", «srvg_sz»: «125 мл, & frac12, чашка, 6 копьев», «еда»: «Спаржа»}, {«fgid»: «vf», «fgcat_id»: «1», «srvg_sz»: «125 мл, & frac12; cup "," food ":" Beans, green "}, {" fgid ":" vf "," fgcat_id ":" 1 "," srvg_sz ":" 125 mL, & frac12, cup cooked "," food " : «Bok choy/Chinese cabbage (Choi sum)»}, {«fgid»: «vf», «fgcat_id»: «1», «srvg_sz»: «125 mL, & frac12; cup», «food»: «Брокколи "}, {" fgid ":" vf "," fgcat_id ":" 1 "," srvg_sz ":" 125 mL, & frac12; cup, 4 sprouts "," food ":" Brussels prouts "}, {" fgid " : «vf», «fgcat_id»: «2», «srvg_sz»: «125 mL, & frac12; cup, 1 large», «food»: «Carrots»}]}
и найти замену диапазона текста от первого «{» к первым «[» и просто заменить его «{{», и (в отдельной команде?) В конце заменить "]", так что это выглядит следующим образом:
{{ "fgid": "Ф.", "fgcat_id": "1", "srvg_sz": "125 мл, & frac12; чашка, 6 копьев »,« еда »:« Спаржа »}, {« fgid »:« vf »,« fgcat_id »:« 1 »,« srvg_sz »:« 125 mL, & frac12; чашка "," еда ":" Бобы, зеленые "}, {" fgid ":" vf "," fgcat_id ":" 1 "," srvg_sz ":" 125 mL, & frac12; чашка приготовленная »,« еда »:« Бок чой/китайская капуста (сумма Чой) »}, {« fgid »:« vf »,« fgcat_id »:« 1 »,« srvg_sz »:« 125 mL, & frac12; чашка "," еда ":" Брокколи "}, {" fgid ":" vf "," fgcat_id ":" 1 "," srvg_sz ":" 125 mL, & frac12; чашка, 4 ростки "," еда ":" Брюссельская капуста "}, {" fgid ":" vf "," fgcat_id ":" 2 "," srvg_sz ":" 125 mL, & frac12; чашка, 1 большая »,« еда »:« Морковь »}}
Но я хотел бы, чтобы это было для любого подобного файла, поэтому я не знаю длины текста« продуктов »(или иногда там это другие элементы перед массивом, которые я также хочу уничтожить до первого «[» начинается]. Это поможет мне разобраться с Open Data от канадского правительства, поскольку все JSON находятся в одном объекте в массиве. . был бы рад использовать любой СЭД или AWK
Если все они строковые, попробуйте 'sed 's/^ [^ [] * \ [/ {/; s/\]} $ /}/'file' – Sundeep
Является ли последний последним JSON? Тем не менее - почему бы просто не использовать парсер JSON? – Sobrique
@Sobrique Я просто хочу вынести из массива, поэтому, если я импортирую в монго или переосмыслить, они получают идентификаторы объектов – Narwhal