繁体   English   中英

如何将多行元素插入XML文件

[英]How to insert multi-line element into XML file

我有像这样的文件

<xml>
<plugins>
<plugin>
<x></x>
</plugin>
</plugins>

我想在其中添加一个新的<plugin>...</plugin>条目。 怎么做?

使用简单的字符串替换可能会出现问题,因为要添加的条目类似于

 <cordova-plugin id="c6" pluginId="someid"
                      path="./somepath/">
         <platform id="p2" name="android" enabled="true"/>
         <platform id="p4" name="ios" enabled="true"/>
      </cordova-plugin>
   </cordova-plugins>

您可以使用以下sed i insert命令将其插入`行。

$ cat file
<xml>
<plugins>
<plugin>
<x></x>
</plugin>
</plugins>
$ sed '/<\/plugins>/ i  <cordova-plugin id="c6" pluginId="someid" path="./somepath/"> \
<platform id="p2" name="android" enabled="true"/> \
<platform id="p4" name="ios" enabled="true"/> \
</cordova-plugin> \
</cordova-plugins>' file
<xml>
<plugins>
<plugin>
<x></x>
</plugin>
<cordova-plugin id="c6" pluginId="someid" path="./somepath/"> 
<platform id="p2" name="android" enabled="true"/> 
<platform id="p4" name="ios" enabled="true"/> 
</cordova-plugin> 
</cordova-plugins>
</plugins>
$

由于您需要为每行新行添加转义( \\ ),因此可以使用普通的bash循环逐行读取并在遇到行时输出插入的内容:

$ cat file
<xml>
<plugins>
<plugin>
<x></x>
</plugin>
</plugins>
$ cat insert
<cordova-plugin id="c6" pluginId="someid"
                      path="./somepath/">
         <platform id="p2" name="android" enabled="true"/>
         <platform id="p4" name="ios" enabled="true"/>
      </cordova-plugin>
   </cordova-plugins>
$ while read -r line || [[ -n "$line" ]]
> do
> [[ "$line" =~ \</plugins\> ]] && cat insert
> echo "$line"
> done  < "file"
<xml>
<plugins>
<plugin>
<x></x>
</plugin>
<cordova-plugin id="c6" pluginId="someid"
                      path="./somepath/">
         <platform id="p2" name="android" enabled="true"/>
         <platform id="p4" name="ios" enabled="true"/>
      </cordova-plugin>
   </cordova-plugins>
</plugins>
$

只需在循环后放置> newfile ,将输出保存到新文件即可。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM