我的/etc/apt/sources.list
包含这一行:
deb http://downloads.sourceforge.net/project/xenlism-wildfire/repo deb/
我想通过sed
命令行删除该行,所以我尝试了这段代码但返回错误!
$ sudo sed 's:deb http://downloads.sourceforge.net/project/xenlism-wildfire/repo deb/::g' /etc/apt/sources.list
sed: -e expression #1, char 75: unknown option to `s'
我猜这个符号:
之后http
导致了这个错误,但我该如何解决呢?
您可以使用任何*符号来分隔与字符串中的符号不冲突的搜索/替换字符串,只要您始终如一地使用它,例如:
这减少了转义有问题的字符的需要(可以使用
\
转义来完成)。*我确信有例外,特别是如果使用旧版本的
sed
,但我不知道手头有任何限制。像这样运行:
我解决的问题:
-i
flag 就地修改文件。没有它,该命令只会将输出打印sed
到屏幕上,而不更新文件。s///
我没有使用空字符串替换该行,而是使用该命令d
删除该行。/.../
我使用了 , 而不是\%...%
,因为%
没有出现在模式中。使用/
,所有出现的/
都必须被替换。请注意,可能更简单的过滤器可能就足够了。例如,如果您知道它
xenlist-wildfire
在文件中是唯一的,那么这个更简单的命令也可以工作:因为在这个例子中没有
/
,我可以使用更简单的/.../
过滤器。(感谢@steeldriver的改进想法。)