Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用SED或unixshell脚本命令删除XML节点_Unix_Sed - Fatal编程技术网

如何使用SED或unixshell脚本命令删除XML节点

如何使用SED或unixshell脚本命令删除XML节点,unix,sed,Unix,Sed,我有一个示例xml文件,如下所示 <Students> <student> <name>john</name> <id>123</id> </student> <student> <name>mike</name> <id>234</id> </stud

我有一个示例xml文件,如下所示

<Students>
    <student>
        <name>john</name>
        <id>123</id>
    </student>
    <student>
        <name>mike</name>
        <id>234</id>
    </student>
</Students>

厕所
123
迈克
234
我想使用该名称删除一个特定的学生节点。例如,我想删除student john元素

<student>
        <name>john</name>
        <id>123</id>
</student>

厕所
123
从xml文件。如何在shell脚本或SED中实现这一点


我正在寻找shell脚本命令,而不是使用xmlstarlet。如何使用SED和REGEX对其进行归档


请告知。

您可以按如下方式使用XMLStartNet

xmlstarlet ed -d "/Students/student[name='john']" 11
ed
用于编辑或更新XML

-d
用于删除参数

“/Students/student[name='john']”“
是xpath

榜样

user@host:/tmp$ xmlstarlet ed -d "/Students/student[name='john']" 11
<?xml version="1.0"?>
<Students>
  <student>
    <name>mike</name>
    <id>234</id>
  </student>
</Students>
user@host:/tmp$xmlstarlet ed-d“/学生/学生[name='john']”11
迈克
234

您试图解决的问题是什么?请不要回答问题,除非作者发布了他的研究成果!立即回答只会使社区成为一个免费的编码服务。我正在寻找shell脚本命令,而不是使用xmlstarlet。如何使用SED和REGEX对其进行归档。