我试图仅使用sed
替换xml中的属性。
我已经在StackOverflow上找到了一个适用于由字母组成的属性的方法。但它并不适用于包含斜杠/
的属性。
XML
我有:
<?xml version="1.0" encoding="UTF-8"?>
<Environment WorkingFolder="" Provider="">
<tag>
</tag>
</Environment>
我尝试将WorkingFolder=""
替换为WorkingFolder="/some/path/"
所以XML
看起来像这样:
<?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
变量由于单引号'
而无法扩展。
答案 0 :(得分:1)
试试这个:
sed -E 's|WorkingFolder="[^"]*"|WorkingFolder="/some/path/"|' file.xml