在将此问题标记为重复之前,让我解释一下。我正在尝试从文件中删除以下字符串出现的地方:
* Running on http://0.0.0.0:80/ (Press CTRL+C to quit)
我看过类似的问题,他们建议使用sed命令:
sed -i -e 's/removedString//g' filename
问题是当我使用字符串执行上述命令时:
sed -i -e 's/ * Running on http://0.0.0.0:80/ (Press CTRL+C to quit)//' filename
我收到以下错误:
sed:-和表达式#1,字符24:“ s”命令的数字不能为零(s /// 0)
我假设s/
仅适用于字符串,而不适用于数字,有没有办法正确删除此痛苦的字符串?
答案 0 :(得分:2)
尝试一下:
sed -i -e 's| \* Running on http://0\.0\.0\.0:80/ (Press CTRL+C to quit)||' filename
通常,当您在玩这个玩具时,请不要添加-i
,只需:
sed -e 's| \* Running on http://0\.0\.0\.0:80/ (Press CTRL+C to quit)||' filename
在工作时,请添加-i
来更改文件 i nplace。
该机制是regex
的 s 。
而且regex
中的许多字符都有特殊含义,因此您必须对其进行转义。
s
之后的字符将用作分隔符,s#From#to#
如下。
并且您可能想添加g
标志来替换多个事件。 s$from$to$g
左右。
在您的情况下,有许多/
,因此最好将其更改为以上示例中的|
。
答案 1 :(得分:1)
如果使用其他分隔符(而不是“ /”),则不必转义所有内容:
sed -e 's| * Running on http://0.0.0.0:80/ (Press CTRL+C to quit)||g' <filename>