2016-12-02 177 views
0

我試圖從同一個XML文件比較資源名稱標籤值來刪除XML文件中的行,下面的bash腳本作品,如果我把日誌文件名作爲Mansing但是當我把價值被失敗作爲'jdbc/test'。任何幫助?發現在bash腳本sed的問題

bash的代碼:

logfilename="jdbc/test" 

sed -i "/\<$logfilename\>/d" /home/test/test.xml 

test.xml文件是如下:

<a> 
<Resource name="jdbc/test" auth="container" url="localhost:8080" 
<Resource name="Mansing" auth="container" url="localhost:8080" 
</a> 
+0

在這裏看到:http://unix.stackexchange.com/questions/ 32907/what-c​​haracters-do-i-need-to-escape-when-using-sed-in-a-sh-script – ceving

回答

1

jdbc/test包含/由sed命令解釋爲一個定界符。試着逃避它:

logfilename="jbdc\/test" 

或用\前綴的第一個新的分隔符更改您的地址默認的分隔符:

sed -i "\~\<$logfilename\>~d" /home/test/test.xml 
+0

logfilename的值將由最終用戶提供,我已經把它作爲硬編碼。 –

+0

請參閱使用其他分隔符的編輯。 – SLePort

+0

偉大的幫助。謝謝。 –