我不是UNIX命令方面的专家,但是试图通过查找和替换目录下的XML文件来创建一个复杂的替换。
这是我的文件结构:
<LocaleCountry>
<link href="../Countries/AZ.xml" path="/Config/Countries/AZ"/>
<link href="../Countries/AM.xml" path="/Config/Countries/AM"/>
</LocaleCountry>
我正在尝试通过使用sed命令在两种模式下进行替换,因为我们的服务器仅将sed作为适当的命令,所以sed是必需的...
转型
from <link href="../Countries/ to <Country file="
from path="/Config/Countries/ to code="
所以最终我的输出应如下所示:
<LocaleCountry>
<Country file="AZ.xml" code="AZ"/>
<Country file="AM.xml" code="AM"/>
</LocaleCountry>
我尝试过的方法有效,但是没有多个“链接”元素,它只会更改第一个元素,而不会影响其他元素,很可能我无法为我的模式创建正确的表达式...
这是我尝试过的:
sed -i 's#<link href="../Countries/#<Country file="#' *.xml
sed -i 's#path="/Config/Countries/#code="#' *.xml
能否请您检查我做错了什么,并在可能的情况下提出解决方案?
答案 0 :(得分:2)
只需告诉替换命令使其全局:
sed -i 's#<link href="../Countries/#<Country file="#g' *.xml
sed -i 's#path="/Config/Countries/#code="#g' *.xml