首页 > 解决方案 > 在json文件中的对象之间添加逗号

问题描述

我有一个大的 json 表,我需要在其上的 json 对象之间添加 comm。我无法手动执行此操作。文件结构如下:

[{"host"
}
{"host"
}
{"host"
}
]

我需要将其修改sed为:

[{"host"
},
{"host"
},
{"host"
}
]

我执行了以下命令。我没有收到任何错误。但文件中没有任何变化:

sed -i 's/}{"host"/},{"host"/g' result.json 

我怀疑我应该考虑 }{ 用换行符分隔?我试图添加\n命令但也没有工作。

标签: jsonlinuxparsingsearchsed

解决方案


使用 GNU awk 进行多字符 RS:

$ awk -v RS='^$' -v ORS= '{gsub(/}\n{/,"},\n{")}1' file
[{"host"
},
{"host"
},
{"host"
}
]

或者,如果您愿意:

$ awk -v RS='}\n{' '{ORS=(RT ? "},\n{" : "")} 1' file
[{"host"
},
{"host"
},
{"host"
}
]

或使用 GNU sed for -zand 识别\n为换行符:

$ sed -z 's/}\n{/},\n{/g' file
[{"host"
},
{"host"
},
{"host"
}
]

推荐阅读