【问题标题】:How to grep a huge XML file?如何grep一个巨大的XML文件?
【发布时间】:2015-11-01 14:35:27
【问题描述】:

我正在尝试在 13GB 的 xml 文件中进行 grep,但我在下面收到此错误。实际上我需要 grep 这个模式并识别行并将 xml 文件中的数据传输到 excel 文件。

home/jale% zgrep -i "Forward Challenge Curly WUT" *filename*

grep: 行太长

grep: 行太长

【问题讨论】:

  • 您是在搜索单个文件还是多个文件?您使用grep 压缩了 XML 文件吗?
  • 我想知道在这种情况下 XML 解析器是否会更有效(如 xmllint --xpath ...)?因为grep 是面向行的,所以 XML 解析器不是并且可以更好地处理输入。
  • @kenorb 看起来该问题的解决方案是忽略二进制文件(此处的 OP 假定他没有使用二进制文件)。

标签: xml linux file grep


【解决方案1】:

使用像XPATH 这样的XML 解析器而不是GREP。 GREP 不是为在 XML 文件中搜索而设计的,而解析器是。

XPath,即 XML 路径语言,是一种用于选择节点的查询语言 来自 XML 文档。此外,XPath 可用于计算值 (例如,字符串、数字或布尔值)来自 XML 的内容 文档。 XPath 由万维网联盟 (W3C) 定义。

【讨论】:

  • 不幸的是,大多数 XPath 处理器都依赖于将整个 XML 文件保存在内存中。
  • 会有一些会分部分读取,用于大文件。你可以调查一下。
【解决方案2】:

也许尝试ugrep 没有文件长度和行长度限制?它还支持选项-z(解压缩)。选项与 GNU grep 和 BSD grep 兼容,因此开始使用它没有学习曲线。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-09-07
    • 2013-05-04
    • 1970-01-01
    • 1970-01-01
    • 2012-05-10
    • 1970-01-01
    • 1970-01-01
    • 2020-08-05
    相关资源
    最近更新 更多