【问题标题】:Search in big file that's one big line, and too big to be opened by an editor在大文件中搜索,这是一大行,并且太大而无法被编辑器打开
【发布时间】:2016-04-21 16:23:43
【问题描述】:

我有一个很大的 xml 文件,其中整个文件只有一行。这是非常不切实际的,因为我需要在文件中搜索某些匹配项,而 grep 命令在这种情况下无能为力。我尝试在 notpad++ 和 sublime 等几个编辑器中打开文件,但文件太大。有什么聪明的方法可以在 linux 或 windows 中搜索字符串或模式的出现吗? grep 的问题当然是它返回了匹配发生的行,在这种情况下这是不好的。

文件大小为 4GB。

【问题讨论】:

  • 是的,有一种非常简单的方法可以做到这一点,它不需要编辑现有文件来引入换行符!如果您发布带有示例输入和预期输出的minimal reproducible example,那么我们可以为您提供帮助。

标签: xml search grep


【解决方案1】:

如果您可以编辑文件,或者至少可以编辑文件的副本,我建议您将其拆分为单独的行,然后使用 grep 或 Notepad++ 等进行搜索。

尝试将 >< 更改为 >\n< - 这会将每个 XML 元素放在自己的行中。

如果您在替换方面需要帮助,请联系 SO question on doing string substitution in bash

【讨论】:

  • 谢谢,我想我会这样做以使其更容易。
【解决方案2】:

大多数 XML 编辑器都可以处理这个问题。投资 oXygen 或 Stylus Studio 之类的 IDE 是非常值得的,但可能有一些免费的 XML 编辑器也可以做得很好。考虑到它对 XML 语法的了解,XML 编辑器通常允许您打开单行 XML 文件并在多行上很好地显示它。

不幸的是,您没有说出“大”的意思。它可能是 1Mb、1Gb 或 1Tb - 这些数字之间存在很大差异!所有编辑器都将在 50Mb 以上时挣扎。

【讨论】:

    【解决方案3】:

    当我需要打开一个大文件时,我使用较少。真的很快:

     less -n filename 
    

    -n 禁用行号(它们需要一段时间来计算,您不需要它们)

    您可以使用 /pattern 进行搜索

    【讨论】:

      【解决方案4】:

      如果您尝试使用grep,您可以使用--color=always 突出显示找到匹配项的部分

      grep --color=always Issues.txt
      

      或者,尝试对此类文件使用 vim 编辑器。

      另外,如果你真的想格式化 xml,即将它分成多行并带有缩进,你可以使用xmllint

      xmllint --format theXMLFile 将输出到标准输出,您可以重定向到另一个文件。

      如果您搜索一下,您可能还知道如何在您最喜欢的编辑器中使用它(在 Kate 中,我使用命令选项)

      【讨论】:

      • 我不知道这实际上是可能的,但由于文件是 4GB,这并没有我想要的那么大的帮助。不过,谢谢你的建议:)
      猜你喜欢
      • 1970-01-01
      • 2022-06-18
      • 2010-09-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多