我有一个很大的json表,我需要在上面的json对象之间添加comm。我无法手动执行此操作。文件结构如下:
[{"host"
}
{"host"
}
{"host"
}
]
我需要使用sed
对其进行修改,例如:
[{"host"
},
{"host"
},
{"host"
}
]
我执行了以下命令。我没有任何错误。但是文件中没有任何变化:
sed -i 's/}{"host"/},{"host"/g' result.json
我怀疑我应该认为} {由换行符分隔吗?我试图在命令中添加\n
,但是也没有用。
答案 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读取器不在乎。