2016-11-28 52 views
0

我想从使用SED的XML文件中删除一行。即sed -i "/Mansing/d" /home/test.xml,但它将资源名称值中的'Mansing'和'MansingTest'两行删除。任何帮助? XML文件是如下使用bash脚本从XML文件中删除一行

<a> <Resource name="Mansing" auth="container" url="jdbc:mysql:"" /> <Resource name="MansingTest" auth="container" url="jdbc:mysql:"" /> <c> <Test>tterer</test> </c> </a>

+2

使用适当的'xml'像'xmlstarlet',而不是生硬的文字处理工具认识工具。 – Inian

+0

什么阻止您将搜索正则表达式更改为'/ \“Mansing \”/'?但@Inian有一个有效的观点:使用适当的工具来完成这项工作。 –

+0

我同意并感谢您的帮助。虽然xmlstarlet在我的最后不起作用,但我会在机器上找出它需要的模块。谢谢 –

回答

1

有了这个语法固定file.xml

<a> 
    <Resource name="Mansing" auth="container" url="jdbc:mysql:" /> 
    <Resource name="MansingTest" auth="container" url="jdbc:mysql:" /> 
    <c> 
     <Test>tterer</Test> 
    </c> 
</a> 

和xmlstarlet。

xmlstarlet ed -d '//a/Resource[@name="Mansing"]' file.xml 

输出:

<?xml version="1.0"?> 
<a> 
    <Resource name="MansingTest" auth="container" url="jdbc:mysql:"/> 
    <c> 
    <Test>tterer</Test> 
    </c> 
</a> 
0
sed "/\<Mansing\>/d" filename