如何用sed将字符串中的\]\[替换为,?尝试命令未生效求方案
解决sed替换
][(或\]\[)无效的问题 针对不同场景的解决方案
场景1:目标是无反斜杠的][
如果你的文件内容为[["2026.04.05 17:52","Powerloss",24]][["2026.04.05 17:52","Powerloss",24]],原命令无效可能是转义冗余或sed版本差异,试试以下命令:
- Linux(GNU sed):
原命令的转义写法也能生效,因为GNU sed会将sed 's/]\[/,/g' filename\]解析为字面量]。 - macOS(BSD sed):
上述命令同样适用,若仍不生效,检查文件是否包含空格、制表符等隐藏分隔字符。
场景2:目标是带反斜杠的\]\[
如果文件中实际是带转义反斜杠的\[\["2026.04.05 17:52","Powerloss",24\]\]\[\["2026.04.05 17:52","Powerloss",24\]\],需要匹配反斜杠(正则中需转义为\\),命令改为:
sed 's/\\]\[/,/g' filename
场景3:][跨两行存在
如果]在一行末尾,[在下一行开头,需处理跨行匹配:
sed 'N; s/\]\n\[/,/g' filename
N指令会将下一行读入模式空间,从而匹配换行分隔的][。
内容的提问来源于stack exchange,提问作者user2090479
相关产品推荐
相关产品推荐

