2016-03-23 13 views
0

xml内の属性を排他的にsedで置き換えようとしています。xml属性をスラッシュを含む文字列に置き換えます。

すでにStackOverflowで、文字で構成される属性で動作するメソッドが見つかりました。ただし、スラッシュを含む属性の場合は/では機能しません。

私が持っているXMLに:

<?xml version="1.0" encoding="UTF-8"?> 
<Environment WorkingFolder="" Provider=""> 
    <tag> 
    </tag> 
</Environment> 

私はXMLは次のようになりますWorkingFolder="/some/path/"

WorkingFolder=""を交換しようとしている:

<?xml version="1.0" encoding="UTF-8"?> 
<Environment WorkingFolder="/some/path/" Provider=""> 
    <tag> 
    </tag> 
</Environment> 

私ならば、私はエラーを取得します試してみてください:

sed -E 's/WorkingFolder="[^"]*"/WorkingFolder="/some/path/"/' file.xml 

スラッシュのため/です。スラッシュ/を逃れるために、別のsedのコマンドを使用している私がしたので、何

path=$(echo /some/path/ | sed 's_/_\\/_g') 

sed -E 's/WorkingFolder="[^"]*"/WorkingFolder="$path"/' file.xml 

問題は今$path変数があるため、単一引用符'で拡大しないということです。

答えて

1

これを試してみてください:

sed -E 's|WorkingFolder="[^"]*"|WorkingFolder="/some/path/"|' file.xml 
関連する問題