I want to write ubuntu terminal script/commands to update JSON file data. The current JSON file format is as per below.
{"_id":"dtpf7gfiay2dvt4","primary_image_url":"https://dt4f7ywfiapgvt.cloudfront.net/products_images/35219/optimized/annie-1.jpg","name_suggest":"Annie","name_suggest_lower":"annie","brand_name_suggest":"Texturae","brand_name_suggest_lower":"texturae","model_number_suggest":"annie","model_number_suggest_lower":"annie","keywords_suggest":["wallpapers","wallpaper","wall-paper","wall-papers"],"keywords_suggest_lower":["wallpapers","wallpaper","wall-paper","wall-papers"],"category_suggest":["Wallpapers","Rugs & Decor"],"category_suggest_lower":["wallpapers","rugs & decor"]}
{"_id":"dt1f7gfiay2gvta","primary_image_url":"https://dt4f7ywfiapgvt.cloudfront.net/products_images/35220/optimized/arcade_a-1.jpg","name_suggest":"Arcade A","name_suggest_lower":"arcade a","brand_name_suggest":"Texturae","brand_name_suggest_lower":"texturae","model_number_suggest":"arcade a","model_number_suggest_lower":"arcade a","keywords_suggest":["wallpapers","wallpaper","wall-paper","wall-papers"],"keywords_suggest_lower":["wallpapers","wallpaper","wall-paper","wall-papers"],"category_suggest":["Wallpapers","Rugs & Decor"],"category_suggest_lower":["wallpapers","rugs & decor"]}
{"_id":"dt1f7yfiap2gvt4","primary_image_url":"https://dt4f7ywfiapgvt.cloudfront.net/products_images/35221/optimized/arcade_b-1.jpg","name_suggest":"Arcade B","name_suggest_lower":"arcade b","brand_name_suggest":"Texturae","brand_name_suggest_lower":"texturae","model_number_suggest":"arcade b","model_number_suggest_lower":"arcade b","keywords_suggest":["wallpapers","wallpaper","wall-paper","wall-papers"],"keywords_suggest_lower":["wallpapers","wallpaper","wall-paper","wall-papers"],"category_suggest":["Wallpapers","Rugs & Decor"],"category_suggest_lower":["wallpapers","rugs & decor"]}
I want to remove _id field of JSON from the current line and want to add that value to above new line. Expected output:
{"index":{"_id":"dtpf7gfiay2dvt4"}}
{"primary_image_url":"https://dt4f7ywfiapgvt.cloudfront.net/products_images/35219/optimized/annie-1.jpg","name_suggest":"Annie","name_suggest_lower":"annie","brand_name_suggest":"Texturae","brand_name_suggest_lower":"texturae","model_number_suggest":"annie","model_number_suggest_lower":"annie","keywords_suggest":["wallpapers","wallpaper","wall-paper","wall-papers"],"keywords_suggest_lower":["wallpapers","wallpaper","wall-paper","wall-papers"],"category_suggest":["Wallpapers","Rugs & Decor"],"category_suggest_lower":["wallpapers","rugs & decor"]}
{"index":{"_id":"dtpf7gfiay2dvt4"}}
{"primary_image_url":"https://dt4f7ywfiapgvt.cloudfront.net/products_images/35220/optimized/arcade_a-1.jpg","name_suggest":"Arcade A","name_suggest_lower":"arcade a","brand_name_suggest":"Texturae","brand_name_suggest_lower":"texturae","model_number_suggest":"arcade a","model_number_suggest_lower":"arcade a","keywords_suggest":["wallpapers","wallpaper","wall-paper","wall-papers"],"keywords_suggest_lower":["wallpapers","wallpaper","wall-paper","wall-papers"],"category_suggest":["Wallpapers","Rugs & Decor"],"category_suggest_lower":["wallpapers","rugs & decor"]}
{"index":{"_id":"dtpf7gfiay2dvt4"}}
{"primary_image_url":"https://dt4f7ywfiapgvt.cloudfront.net/products_images/35221/optimized/arcade_b-1.jpg","name_suggest":"Arcade B","name_suggest_lower":"arcade b","brand_name_suggest":"Texturae","brand_name_suggest_lower":"texturae","model_number_suggest":"arcade b","model_number_suggest_lower":"arcade b","keywords_suggest":["wallpapers","wallpaper","wall-paper","wall-papers"],"keywords_suggest_lower":["wallpapers","wallpaper","wall-paper","wall-papers"],"category_suggest":["Wallpapers","Rugs & Decor"],"category_suggest_lower":["wallpapers","rugs & decor"]}
I tried below commands
sed -e 's/$/\n{"index":{}}/' -i products_suggest_v4_singular_plural_v2-7.json #which is adding static new line. I want to make it dynamic
sed '/"_id":/s/"_id":[^,]*,//' > products_suggest_v4_singular_plural_v2.json #removing value of _id field
sed 's/"_id":"[^"]\+",//'