在json文件中的对象之间添加逗号

时间:2018-08-19 19:06:57

标签: json linux parsing search sed

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

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

我需要使用sed对其进行修改,例如:

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

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

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

我怀疑我应该认为} {由换行符分隔吗?我试图在命令中添加\n,但是也没有用。

2 个答案:

答案 0 :(得分:0)

使用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 -z并将\n识别为换行符:

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

答案 1 :(得分:0)

您可以轻松地在换行符之后插入逗号,而不是尝试在换行符之前插入逗号

sed 's/^{"host"/,&/'

结果看起来有些奇怪,但是一致的JSON读取器不在乎。