当字符串中有“http://”时,sed 如何替换?

Mic*_*ant 6 shell bash sed shell-script replace

我有一个包含xx以下内容的文件:

@base_url = "http://dmstaffing-stage.herokuapp.com/"
Run Code Online (Sandbox Code Playgroud)

我想用 sed 来消除这一行(什么都不用替换)。我已经成功地将这种 sed 技术与其他几行一起使用,例如

sed -i 's/require "selenium-webdriver"//' xx
Run Code Online (Sandbox Code Playgroud)

但是我对 @base_url 行的尝试不起作用。我怀疑 http:// 中的 " 或 // 弄乱了它,但我似乎无法修复!

我试过了:

$ sed  's/@base_url = "http://dmstaffing-stage.herokuapp.com/"//' xx
sed: -e expression #1, char 23: unknown option to `s'

$ sed  's/@base_url = \"http://dmstaffing-stage.herokuapp.com/\"//' xx
sed: -e expression #1, char 24: unknown option to `s'

$ sed  's/@base_url = "http:\/\/dmstaffing-stage.herokuapp.com/"//' xx
sed: -e expression #1, char 58: unknown option to `s'
Run Code Online (Sandbox Code Playgroud)

但没有一个工作。

Run*_*ium 5

如前所述,使用其他分隔符或转义斜杠。您的最后一次尝试错过了最后一个斜线的转义。

正如@StephaneChazelas所指出的,escapedot也是如此。

并且,如果不需要,包括@terdonsed;grep -Fxv,其中-F是固定字符串,而不是正则表达式,将是一个选项。-x确保它匹配整行。-v反转。

一个简单(非常简单)的基准测试time -v似乎很受欢迎sed。(GNU 变体。)

sed 's/@base_url = "http:\/\/dmstaffing-stage\.herokuapp\.com\/"//' xx
Run Code Online (Sandbox Code Playgroud)

要完全删除它(不留空行),请使用:

sed '/@base_url = "http:\/\/dmstaffing-stage\.herokuapp\.com\/"/d' xx
                                                                |
                                                                +--- Delete
Run Code Online (Sandbox Code Playgroud)