2016-12-02 4 views
0

リソース名のタブ値を同じxmlファイルと比較してxmlファイルから行を削除しようとしましたが、logfilenameを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-as-a-shスクリプトを使用する場合 – ceving

答えて

1

jdbc/testはsedコマンドによって区切り文字として解釈される/を含有します。それをエスケープしてみてください。

logfilename="jbdc\/test" 

または\で最初の新しい区切り記号を付けることによって、あなたのアドレスで、デフォルトの区切り文字を変更:

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

logfilenameの値はエンドユーザによって提供されますが、ここではハードコードされています。 –

+0

別の区切り文字を使用するための編集を参照してください。 – SLePort

+0

大きな助け。ありがとうございました。 –

関連する問題