有些人將其所有主要數據元素都放在數組中的JSON文件格式化。我想將數組元素提升爲json對象。如何使用awk或sed替換模式範圍
換句話說......我想採取任何普通的文本文件是這樣的:
{ 「食品」:[{ 「FGID」: 「VF」, 「fgcat_id」: 「1」, 「srvg_sz」:「125mL,杯,6支矛」,「食物」:「蘆筍」},{「fgid」:「vf」,「fgcat_id」:「1」,「srvg_sz」 frac12; cup「,」food「:」Beans,green「},{」fgid「:」vf「,」fgcat_id「:」1「,」srvg_sz「:」125mL,½ cup cooked「 :「Bok choy /大白菜(Choi sum)」},{「fgid」:「vf」,「fgcat_id」:「1」,「srvg_sz」:「125毫升,杯子」,「食物」:「西蘭花「},{」fgid「:」vf「,」fgcat_id「:」1「,」srvg_sz「:」125毫升,杯子,4個豆芽「,」食物「:」抱子甘藍「},{」fgid「 :「vf」,「fgcat_id」:「2」,「srvg_sz」:「125mL,&cup,1 large」,「food」:「胡蘿蔔」}]}
和找到替換文本範圍內的第一「{」到第一「[」,只是替換爲「{{」,並且(在一個單獨的命令?)在末端取代「]」,所以,它看起來像這樣:
{{ 「FGID」: 「VF」, 「fgcat_id」: 「1」, 「srvg_sz」:「125毫升,½杯,6矛「,」食物「:」蘆筍「},{」fgid「:」vf「,」fgcat_id「:」1「,」srvg_sz「:」125毫升,½杯子「,」食物「:」豆類,綠色「},{」fgid「:」vf「,」fgcat_id「:」1「,」srvg_sz「:」125mL,½杯子熟「,」食物「:」白菜/大白菜(Choi sum)「},{」fgid「:」vf「,」fgcat_id「:」1「,」srvg_sz「:」125mL,½杯子「,」食物「:」西蘭花「},{」fgid「:」vf「,」fgcat_id「:」1「,」srvg_sz「:」125mL,½杯子,4芽菜「,」食物「:」布魯塞爾豆芽「},{」fgid「:」vf「,」fgcat_id「:」2「,」srvg_sz「:」125mL,½杯,1個大」,‘食品’:‘胡蘿蔔’}}
但我想這是對任何類似文件,所以我不知道的長度‘食品’的文字(或有時有是陣列之前的其他元素,我也想在第一個「[」開始之前消滅它)。這將幫助我處理來自加拿大政府的Open Data,因爲所有的JSON都在一個數組中的一個對象中,謝謝。 。會很樂意爲使用awk或者sed
如果它們全部是一行一行,請嘗試'sed's/^ [^ [] * \ [/ {/; s/\]} $ /} /'file' – Sundeep
是後者有效的JSON嗎?即使如此 - 爲什麼不使用JSON解析器呢? – Sobrique
@Sobrique我只想取出數組,所以如果我導入到mongo或重新思考他們得到對象ID – Narwhal