2017-08-05 58 views
2

我需要的東西如何使用sed執行此更換?

#Banner none 

替換行文件

Banner /etc/motd 

我想:

sed -i "s/^#Banner none/Banner /etc/motd/" /root/testfile.sh 

這是行不通的。你知道我怎麼能做到我想要的嗎?

+0

請看一看:?當有人回答我的問題,我應該怎麼辦(http://stackoverflow.com/help/someone-answers) – Cyrus

+0

@Cyrus:答案在發佈後不到一個小時就被接受。 –

回答

3

由於您在替換時使用了斜槓,因此您應該使用其他分隔符而不是斜線。逗號:

sed -i "s,^#Banner none,Banner /etc/motd/," /root/testfile.sh 

否則,你不得不逃離斜線路徑:

sed -i "s/^#Banner none/Banner \/etc\/motd/" 
+1

或者您可以使用斜線,然後使用反斜槓來轉義替換中的任何斜線:'sed -i「s/^#Banner none/Banner \/etc \/motd \ //」/ root/testfile.sh' –

2

你需要逃避你的斜線,或使用不同的分隔不是「/」。

能使用

sed -i "s/^#Banner none/Banner \/etc\/motd/" /root/testfile.sh

sed -i "s,^#Banner none,Banner /etc/motd," /root/testfile.sh