2016-11-03 176 views
0

我有文件,其中包含:插入字符串包含「/」

hello 
test1 
DocumentRoot /var/www/html/ 
test2 
hey 

現在我嘗試線下加上「world」「DocumentRoot /var/www/html/

,使其看起來像這樣:

hello 
test1 
DocumentRoot /var/www/html/ 
world 
test2 
hey 

這是我很難,因爲上面的行包含「/」 我試過,但它迪□不工作:

sed 's/DocumentRoot /var/#www/#html/#\ /DocumentRoot /var/#www/#html/#\nworld/' file 

它給了我一個完全錯誤的輸出

hallo 
test1 
var/var/www/html/ 
test2 
hey 
+4

你可以像這樣使用:'sed's @ regex @ replace @'' – sat

+1

我們應該能夠根據SO文檔來關閉一個問題:P https://stackoverflow.com/documentation/sed/1096/substitution/12280/using-different-delimiters#t = 201611030947028728011 – Sundeep

+0

您是否嘗試過尋找解決方案,經常詢問這個問題? – 123

回答

2

更改分隔符來比斜線以外的字符,並使用a命令追加字符串:

sed '\#DocumentRoot /var/www/html/#a\ 
world' file 

這裏我使用#作爲分隔符。在某些版本的sed中,你可以將所有這些放在同一行上,但是我寫它的方式更加便攜。

+1

不知道不同的分隔符可以用於匹配,也可以在開始時加入'''''! ++ – Sundeep

+1

@Sundeep我總是忘記如何去做。這在[在sed替換中使用斜線]中記錄(http://stackoverflow.com/a/5864155/1983854)。有時間將它添加到[sed'的文檔](https://stackoverflow.com/documentation/sed/)。 – fedorqui

+0

gnu sed手冊頁 - https://www.gnu.org/software/sed/manual/sed.html#sed-Programs ...請參閱'3.2使用sed選擇行'下的'\%regexp%'' – Sundeep