在命令行sed中用特殊字符替换字符串

Replacing strings with special characters in command line sed

我想通过在命令行中将行 %% {some_string, []}, 替换为 {some_string, []} 来取消注释配置文件的一行。

我尝试了几种不同的格式 sed:

sed 's/%% {some_string, []},/{some_string, []}/' filename

sed "s/%% {some_string, []},/{some_string, []}/" filename

sed "s/'%% {some_string, []},'/'{some_string, []}'/" filename

sed 's/"%% {some_string, []},"/"{some_string, []}"/' filename

但是每次都收到输出sed: -e expression #1, char (some number): unterminated s' command

由于我的特殊字符,我假设这与我的格式有关,但似乎无法找到可能导致该问题的具有相同字符的任何其他帖子。我也不能事先将这些字符串声明为变量,因为我需要在命令行中 运行。

sed 要求你转义方括号。

sed 's/%% {some_string, \[\]},/{some_string, []}/' filename