Bash
當字元串中包含“http://”時,sed 如何替換?
我有一個包含
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所指出的,escape
dot
也是如此。並且,如果不需要,包括@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