2012-11-18 19 views
1

我在SED一個小問題旁的開始,我想替換以下行:桑達更換符合空間&#字符varriable substituation

space here#Include "/usr/local/apache/conf/userdata/std/2/varr1/var2/*.conf" 

space here# Include "/usr/local/apache/conf/userdata/std/2/varr1/varr2/*.conf" 

(注意空格之後#)

以下

Include "/usr/local/apache/conf/userdata/std/2/varr1/varr2/*.conf" 

下面的代碼工作,本着不與空間開始:

sed -i "s/# Include \"\/usr\/local\/apache\/conf\/userdata\/std\/2\/$varr1\/$varr2\/\*.conf\"/Include \"\/usr\/local\/apache\/conf\/userdata\/std\/2\/$varr1\/$varr2\/\*.conf\"/" file.name 

任何幫助將不勝感激, 感謝所有

回答

0

你並不需要寫的路徑,只是捕捉到它:

sed -i 's!# *Include \("[^"]*"\)!Include \1!' input.file 
+0

? OP可以有許多不同的_Includes_,他說他只想替換2條路徑。 –

+0

OP是什麼時候說的? – perreal

+0

超現實,非常感謝,這個作品對我很好 –

0

而不是使用/作爲分隔符,你可以拿起任何字符你想要的。

例如:

sed -i '[email protected]@@g' file 

所以,沒有必要把反斜槓的一切,這是難以閱讀的人物像。

最後,嘗試這樣做:

sed -i '[email protected]^ *# *Include \+"/usr/local/apache/conf/userdata/std/2/varr1/var\+2/\*\.conf"@Include "/usr/local/apache/conf/userdata/std/2/varr1/varr2/*.conf"@g' file.name 

注意

  • *字符意味着零或N的正則表達式
  • ^字符出現意味着啓動線
  • * & .是特殊字符,所以它們被反斜槓。後來指任何單個字符
+0

sputnick,太感謝你了,對不起,這並不工作,但我真的appretiate您請嘗試 –