如何使用带空格符号的shell在XML文件中添加一行



嗨,我有一个类似的XML文件

<Parameter name="man" override="false" value="false"/>
<Parameter name="vendor" override="false" value="serve"/>
<Parameter name="buzz" override="false" value=""/>

我需要添加一行像这样的

<Parameter name="dentist" override="false" value="sunday"/>

我需要得到这样的文件和空间符号

<Parameter name="man" override="false" value="false"/>
<Parameter name="vendor" override="false" value="serve"/>
<Parameter name="dentist" override="false" value="sunday"/>
<Parameter name="buzz" override="false" value=""/>

提前感谢

使用xmlstarlet,命令行XML文件操作的瑞士军刀(以及基于您的示例的实际XML文件(:

$ xmlstarlet ed -a '//Parameter[2]' -t elem -n Parameter 
-i '//Parameter[3]' -t attr -n name -v dentist 
-i '//Parameter[3]' -t attr -n override -v false 
-i '//Parameter[3]' -t attr -n value -v sunday input.xml
<?xml version="1.0"?>
<Parameters>
<Parameter name="man" override="false" value="false"/>
<Parameter name="vendor" override="false" value="serve"/>
<Parameter name="dentist" override="false" value="sunday"/>
<Parameter name="buzz" override="false" value=""/>
</Parameters>

首先在第二个节点之后添加一个新的Parameter节点(使其成为新的第三个节点(,然后用属性填充它。