2015-02-24 77 views
0

這可能是愚蠢的簡單,但我一直在尋找過去3個小時試圖找出解決方案。我需要在一個文件(/etc/reliance.env)中插入一個單詞(由變量「$ t」定義),在另一個恰好有「/」的單詞之前。 (假設「/定製」)使用/在sed搜索/替換字符串

我目前的解決方案涉及用$ t/custom替換/定製。問題在於sed似乎不喜歡使用字符「/」。無論如何,我確信有一個更有效的解決方案。任何見解?提前致謝!

 if grep "/custom" /etc/reliance.env; then 
     sed -i 's/"/custom/"/"$t /custom/"/g' reliance.env 

回答

2

您可以使用幾乎任何字符作爲s///命令中的分隔符。如果你需要在你的模式或更換隻需要使用其他東西斜槓。

sed -i "s,/custom,$t &,g" reliance.env 

(我在這又意味着「整場比賽」,以避免需要鍵入它的替代物&。)

你還需要,如果你想在雙引號(而不是單引號) shell擴展$t變量。如果沒有,那麼單引號就是你想要的。

除非你的文件是非常大的,或者您需要對其進行修改,除非是內容是否有運行grep第一可能沒有必要(和你一定要告訴grep停在首場比賽-m 1因爲這是alll你關注和沉默grep的輸出與-q)。

+0

這個伎倆!感謝:D – perseusraz 2015-02-24 21:47:01

0

逃脫字符:

sed -i "s/\/custom/\$t \custom/g/" reliance.env 

編輯:另外,通過文件grepping不大大快上運行它sed,所以只跳過if grep ...,只是做你的sed ING。