xx
我有一个包含以下内容的文件:
@base_url = "http://dmstaffing-stage.herokuapp.com/"
我想使用 sed 消除这一行(什么都不替换)。我已成功地将这种 sed 技术与其他几行一起使用,例如
sed -i 's/require "selenium-webdriver"//' xx
但我对 @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'
但没有一个起作用。
答案1
如前所述,使用其他分隔符或逃脱斜线。你的最后一次尝试错过了最后一个斜杠的转义。
正如所指出的@斯蒂芬查泽拉斯,逃脱dot
也是如此。
并且,包括@特登如果sed
不需要;grep -Fxv
,其中-F
是固定字符串,而不是正则表达式,将是一个选项。-x
确保它匹配整行。-v
反转。
不过,一个简单(非常简单)的基准测试time -v
似乎更受欢迎sed
。 (GNU 变体。)
sed 's/@base_url = "http:\/\/dmstaffing-stage\.herokuapp\.com\/"//' xx
要完全删除它(不留空行),请使用:
sed '/@base_url = "http:\/\/dmstaffing-stage\.herokuapp\.com\/"/d' xx
|
+--- Delete
答案2
尝试使用另一个分隔符:
sed 's|@base_url = "http://dmstaffing-stage.herokuapp.com/"||' xx
答案3
正则表达式中的斜杠弄乱了 sed 的分隔符。但你可以使用不同的分隔符比斜杠。例如:
sed 's#@base_url = "http://dmstaffing-stage.herokuapp.com/"##' xx
答案4
您可以转义斜线,例如sed -e 's/"@base_url = "http:\/\/dmstaffing-stage.herokuapp.com\/"/d'
.这种丛林/\/\//\//
是所谓的 LTS(倾斜牙签综合症)的症状。解决这个问题的最佳方法是使用另一个分隔符,就像;
您的情况一样,或者今天您喜欢的任何其他非字母数字字符(显然,不包括在您想到的任何损坏中)。