【发布时间】:2017-01-09 09:42:55
【问题描述】:
我有一个需要添加数据的 xml 文件,我尝试使用 sed。谁能帮我找出我做错的地方。
我有一个这样的 xml 文件:
<!DOCTYPE sf-migration
PUBLIC "-//VA Software, Inc.//DTD SourceForge Migration 1.0//EN"
"/opt/add-ons/import-6.1/dtd/sf-migration_1_0.dtd">
<sf-migration toVersion="6.1.0.0" fromVersion="5.0.0.0">
<users></users>
</sf-migration>
现在我需要在用户中添加以下文件:
<sfuser xid="user1000">
<username>beq03838</username>
<email>noreply@nxp.com</email>
<alternateEmail1></alternateEmail1>
<dateCreated>2016-12-20 14:02:23 CET</dateCreated>
<dateLastModified>2016-12-20 14:02:23 CET</dateLastModified>
<detail></detail>
<monitoringPreference>email</monitoringPreference>
<lastLogin></lastLogin>
</sfuser>
我的输出应该如下:
enter <!DOCTYPE sf-migration
PUBLIC "-//VA Software, Inc.//DTD SourceForge Migration 1.0//EN"
"/opt/add-ons/import-6.1/dtd/sf-migration_1_0.dtd">
<sf-migration toVersion="6.1.0.0" fromVersion="5.0.0.0">
<users>
<sfuser xid="user1000">
<username>beq03838</username>
<email>noreply@nxp.com</email>
<alternateEmail1></alternateEmail1>
<dateCreated>2016-12-20 14:02:23 CET</dateCreated>
<dateLastModified>2016-12-20 14:02:23 CET</dateLastModified>
<lastLogin></lastLogin>
</sfuser>
</users>
</sf-migration>
我使用下面的 shell 脚本来附加文本:
CONTENT=give the suer content
C=$(echo $CONTENT | sed 's/\//\\\//g')
sed "/<\/users>/ s/.*/${C}\n&/" /tmptest/user1.xml
我做错了什么?有没有其他简单的方法可以在 xml 中添加元素? 我需要在 shell 中完成此操作,因为我的完整代码在 shell 中
【问题讨论】:
-
您遇到的错误是什么?并且是否打算将“输入”作为输出中的第一个单词?
标签: xml shell xml-parsing