首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过counting not属性删除xml元素

通过counting not属性删除xml元素
EN

Stack Overflow用户
提问于 2015-05-25 17:23:52
回答 2查看 24关注 0票数 0

嗨,我有一个超大的xml文件(40+ GB)。简化后的结构是

代码语言:javascript
复制
<xml>
    <element>111</element>
    <element>222</element>
    <element>333</element>
    <element>444</element>
    <element>555</element>
    <element>666</element>
    ...
</xml>

我正在尝试删除2,000,000个元素,但我不知道该元素的内容。有没有办法让我这样做?我已经搜索了几个小时,但只找到了基于属性的xml查询。谢谢!

EN

回答 2

Stack Overflow用户

发布于 2015-05-25 17:34:44

如果您使用的是UNIX,并且已知文件总是采用这种格式,那么使用sed可能是最容易的。

代码语言:javascript
复制
sed -e '2000001d' infile > outfile

如果需要解析实际的XML结构,可以考虑使用xml-sed

票数 0
EN

Stack Overflow用户

发布于 2015-05-26 17:56:27

假设您想删除前五个element,首先,获取第一个打开的<element>所在的行。

代码语言:javascript
复制
$ opening=$(grep -n '<element>' < x.xml | head -1 | cut -d: -f1)

然后获取第五个结束</element>的代码行。

代码语言:javascript
复制
$ closing=$(grep -n '</element>' < x.xml | head -n5 | tail -1 | cut -d: -f1)

现在删除从openingclosing的行。

代码语言:javascript
复制
$ sed "${opening},${closing}d" < x.xml

输出:

代码语言:javascript
复制
<xml>
    <element>666</element>
</xml>

如果不确定XML文件的格式,请使用xmllint进行清理。

代码语言:javascript
复制
$ xmllint -format x.xml
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30435029

复制
相关文章

相似问题

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