如何从文件中删除特定的字符串出现?

时间:2019-02-19 16:49:00

标签: bash sed

在将此问题标记为重复之前,让我解释一下。我正在尝试从文件中删除以下字符串出现的地方:

 * 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/仅适用于字符串,而不适用于数字,有没有办法正确删除此痛苦的字符串?

2 个答案:

答案 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>