我有一个部分损坏的 JSON 文件的数据库。出于某种原因编写它们的人在文件末尾包含了一个额外的逗号。这些文件有无数个,所以我需要修复它们。这是它的样子:
{
"foo": "bar",
"foo1": "bar1",
"foo2": "bar2",
}
所以我正在尝试使用 sed 命令来去掉逗号。现在,我已经 sed 's|',\n}'|'\n}'|'但它没有修改文件。我究竟做错了什么?
最佳答案
sed
的版本OS X 附带的不处理 \n
作为换行符,但作为转义的“n”(减少为常规的“n”)。由于您使用的是 bash
,您可以尝试以下方法:
sed $'s|,}|\\\n|' file.txt
$'...'
是 bash
中的一种特殊引用类型这允许对某些逃逸进行特殊处理。 \\\n
是一个转义的反斜杠,后跟一个换行符,bash
赠送给 sed
作为单个转义换行符。更新:记得使用
$
之后而不是搜索文本中的换行符,我意识到您无法匹配下一行中后跟大括号的命令(或者至少,我不知道如何使用我的有限命令 sed
)。
关于macos - 带有\n 的 Sed 命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17574959/