Bash

當字元串中包含“http://”時,sed 如何替換?

  • May 15, 2013

我有一個包含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'

但沒有一個工作。

如前所述,使用其他分隔符或轉義斜杠。您的最後一次嘗試錯過了最後一個斜線的轉義。

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

並且,如果不需要,包括@terdon ;,其中是固定字元串,而不是正則表達式,將是一個選項。確保它匹配整行。倒置。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

引用自:https://unix.stackexchange.com/questions/75973