【发布时间】:2017-12-09 04:45:29
【问题描述】:
我正在尝试使用 sed 编辑 XML 文件。这是我要编辑的文件内容。
<configuration key="student1">
<list>
<value>abc</value>
<value>def</value>
</list>
</configuration>
我想通过比较key值的方式给现有节点添加如下值。
<configuration key="student1">
<list>
<value>abc</value>
<value>NEWVALUE</value>
<value>def</value>
</list>
</configuration>
如何使用 sed 命令实现它?在看了很多帖子之后,xmlstarlet 是编辑 xml 文件的最佳选择。但由于权限问题,我无法安装。有人可以帮我解决吗?
更新:
我试过的是:
sed -i "s/\<\list\>/ \<value\> NEWVALUE\<\/VALUE\>/" xmlfile
这没有按预期工作,它将 list 标记替换为 NEWVALUE。但是我需要比较键值,然后遍历列表,然后添加新值。
【问题讨论】:
-
添加您尝试过的 sed 代码...所以是关于帮助您处理您已经尝试过但卡住的代码...
-
可能有一种方法可以在您的主目录中安装您想要的任何内容。 Sed(或任何其他文本处理程序)绝对不是适合这项工作的工具。
-
@Sundeep,我已经添加了我尝试过的代码。
-
@BasilJose 您尝试的内容与您想要的内容相去甚远..您只是想替换
<list>标签..和\<和\>具有匹配单词边界的特殊含义GNU sed ...您要比较的关键值是什么?student1还是<value>abc</value>?无论如何,在这里使用sed确实不是最好的主意