首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在XML文件中插入多行元素

如何在XML文件中插入多行元素
EN

Stack Overflow用户
提问于 2016-03-08 10:18:49
回答 1查看 840关注 0票数 0

我有一个包含如下文本的文件

代码语言:javascript
运行
复制
<xml>
<plugins>
<plugin>
<x></x>
</plugin>
</plugins>

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

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

代码语言:javascript
运行
复制
 <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>
EN

回答 1

Stack Overflow用户

发布于 2016-03-08 17:00:43

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

代码语言:javascript
运行
复制
$ 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循环逐行读取,并在遇到行时输出插入的内容:

代码语言:javascript
运行
复制
$ 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放在循环之后,即可将输出保存到新文件中。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35857735

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档