打开大型(巨型、巨大、大型)文本文件的文本编辑器

我的意思是100多MB大;这样的文本文件可以推动编辑器的信封。

我需要查看一个大的XML文件,但如果编辑器有问题,就无法查看。

有什么建议吗?

解决办法

VS Code (Windows, macOS, Linux) - 免费和开放源代码,有一个漂亮的GUI。编辑了一个3.6GB的JSON文件,在一分钟内加载。你必须有足够的内存来加载文件。

免费的只读查看器。

  • glogg (Windows, macOS, Linux) - 经证实可以处理多GB的文件。它的主要功能是正则表达式搜索。有标签,直接从磁盘读取文件,可以观察/跟踪文件,并允许用户标记行。
  • LogExpert (Windows) - "一个替代tail的GUI。" 支持文件跟随、搜索、过滤、可配置的高亮、插件和外部工具。
  • 大型文本文件查看器 (Windows) - 极简主义,可执行大小非常小。支持分割视图、文本主题定制、反义词搜索和文件跟踪。
  • Lister (Windows) - 更加小巧和简约。它是一个可执行文件,仅有500KB,但它仍然支持搜索(使用词组)、打印、十六进制编辑器模式和设置。

免费的编辑器。

  • VimEmacs (Windows, macOS, Linux) - 经典的Unix编辑器。学习曲线很陡,但效率很高。它们的设置可以被调整,以使它们更快。
  • 大文件编辑器 (Windows) - 打开和编辑TB以上的文件,支持Unicode,使用很少的内存,有XML特定的功能,并包括一个二进制模式。
  • HxD (Windows) - 一个十六进制编辑器,而不是一个文本编辑器;但它的速度惊人,而且很有用。
  • GigaEdit (Windows) - 支持搜索、字符统计和字体定制。但它有很多问题--对于大文件,它只允许覆盖字符,不允许插入字符;它不尊重LF作为行结束符,只尊重CRLF;而且速度很慢。

内置程序(无需安装)。

  • less (macOS, Linux) - 传统的Unix命令行传呼工具。让你查看几乎任何大小的文本文件。也可以安装在Windows上。
  • 记事本 (Windows) - 在处理大文件时表现不错,尤其是在关闭换词功能后。
  • MORE (Windows) - 这是指Windows的MORE,而不是Unix的More。一个控制台程序,允许你在一个屏幕上查看一个文件。

网络查看器。

  • htmlpen.com - 可以打开和语法高亮的TB+文件。允许编辑,除非是非常大的文件。支持搜索、重码和导出。
  • readfileonline.com - 另一个HTML5大文件查看器。支持搜索。

付费编辑。

  • 010 Editor (Windows, macOS, Linux) - 打开巨型(多达50GB)文件。
  • SlickEdit (Windows, macOS, Linux) - 打开大型文件。
  • UltraEdit (Windows, macOS, Linux) - 打开超过6GB的文件,但必须改变配置才能实用。菜单 » 高级 » 配置 » 文件处理 » 临时文件 » 打开文件不需要临时文件...
  • EmEditor (Windows) - 能很好地处理非常大的文本文件(官方称最大为248GB,但根据一份报告,最大为900GB)。

最后,你有没有试着用你的常规编辑器打开这个大文件?一些编辑器实际上可以处理合理的大文件。特别是,Notepad++(Windows)和Sublime Text(Windows、macOS、Linux)支持2GB的文件。

评论(61)

技巧和窍门

你为什么要用编辑来只看一个(大)文件?

在*nix或Cygwin下,只需使用less。(有一句名言--"less is more, more or less"--因为"less"取代了早期的Unix命令"more",并增加了你可以向上滚动的功能)。在less下的搜索和导航与Vim非常相似,但没有交换文件,也很少使用RAM。

GNU less有一个Win32的移植版本。见上述答案中的"less"部分。

Perl

Perl很适合编写快速脚本,它的"..."(范围翻转)操作符是一种很好的选择机制,可以限制你必须涉足的垃圾。

比如说。

$ perl -n -e 'print if ( 1000000 .. 2000000)' humongo.txt | less

这将提取从第1百万行到第2百万行的所有内容,并允许你用更少的时间手动筛选输出。

另一个例子。

$ perl -n -e 'print if ( /regex one/ .. /regex two/)' humongo.txt | less

当"正则表达式一"找到一些东西时,就开始打印,当"正则表达式二"找到一个有趣的块的末端时,就停止打印。它可能会找到多个块。筛选输出...

logparser

这是另一个你可以使用的有用工具。引用维基百科的文章

logparser是一个灵活的命令行工具,最初由微软员工Gabriele Giuseppini编写,用于IIS日志的自动测试。它旨在与Windows操作系统一起使用,并被包含在IIS 6.0资源包工具中。logparser的默认行为就像一个"数据处理管道",通过接收命令行中的SQL表达式,并输出包含SQL表达式匹配的行。

微软将Logparser描述为一个强大的、多功能的工具,提供对基于文本的数据的通用查询访问,如日志文件、XML文件和CSV文件,以及Windows操作系统上的关键数据源,如事件日志、注册表、文件系统和活动目录。输入的查询结果可以在基于文本的输出中自定义格式,也可以持久化到更专业的目标,如SQL、SYSLOG或图表中。

使用实例。

C:\>logparser.exe -i:textline -o:tsv "select Index, Text from 'c:\path\to\file.log' where line > 1000 and line < 2000"
C:\>logparser.exe -i:textline -o:tsv "select Index, Text from 'c:\path\to\file.log' where line like '%pattern%'"

大小的相对性

100MB不算太大。3GB就有点大了。我曾经在一个打印&邮件设施工作,创造了大约2%的美国一等邮件。我担任技术负责人的一个系统占了大约15%以上的邮件。我们在这里和那里有一些大文件需要调试。

还有更多...

欢迎在此添加更多的工具和信息。这个答案是社区维基的一个原因!我们都需要更多关于处理大量数据的建议...

评论(12)