用包含斜杠的String替换xml属性

时间:2016-03-23 09:21:49

标签: xml linux bash sed

我试图仅使用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变量由于单引号'而无法扩展。

1 个答案:

答案 0 :(得分:1)

试试这个:

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