Linux 文本编辑器能够处理非常非常长的行和固定长度的记录

Linux 文本编辑器能够处理非常非常长的行和固定长度的记录

我这里遇到了一个相当简单的问题:我有一段文本,它有一大行(约 150,000 个字符)。没有换行符,并且它是一个固定长度的平面文件(即它是由程序生成的COBOL),因此引入换行符不仅很尴尬,而且如果我尝试更改文件,它根本无济于事。

大多数文本编辑器虽然能工作,但都难以处理这么大的单行(less不喜欢它、Gedit不喜欢它、nano不喜欢它、我听说vim不喜欢它,等等)。

有谁能推荐一款更适合我所处理数据的编辑器吗?虽然只有一行,但仍然比 1GiB+ 文本文件(包含正常长度的行)引发更多问题……

EBCDIC如果它能够正常工作并且在遇到空字节时不会出错,或者在写回时破坏它们(某些字段是二进制编码的十进制数),那就更好了。

请注意,这与文件原始大小无关 - 文件仅包含一行 - 而是因为大多数编辑器并未针对处理非常长的行进行优化。

答案1

我认为,就实际目的而言,您所描述的文件就像二进制文件一样,您应该这样对待它。

您可以使用十六进制编辑器来攻击它,但这对 EBCIDC 部分没有帮助。

如果您需要对此文件进行大量编辑,并且非常熟悉其固定长度记录格式,那么可能值得您花时间用 Perl 或其他语言编写一些东西(我建议使用 Perl,因为它很旧并且很可能具有将 UTF-8 等转换为 EBCIDC 的模块),以便与此文件的特定格式兼容。

答案2

其实我刚刚尝试过vim 在一个单行有 150000 个字符的文件上,运行非常顺畅。

因此我想你真的应该尝试一下,如果你不只是因为……的话you heard vim doesn't like such kind of files

以下是我获取文件的方式:

seq 150000 | while read num; do echo -n "b" ; done > megaline.txt

答案3

我尝试了与 Dakatine 相同的方法,并安装了 emacs,效果很好。没有挂断,什么都没有。如果您正在编辑纯文本(即不执行编程语言模式所需的任何类型的分析text-mode),则锁定 emacs 将非常非常困难。您在 Eclipse 中看到的行为可能反映了 Eclipse 在呈现文本时试图对文本进行某种分析的事实 - Gedit 也是如此。我也无法重现您的问题less- 对我来说它很好。

答案4

试一试:JEdi​​t - 程序员编辑器

它有一些高级缓冲功能和高度优化的 I/O,但启动需要一段时间(由于 JVM)。我一直用它来查看和编辑超过 1GiB 的文件,没有任何问题 - 至少在 Debian 上。但我不能保证它在 Windows 上的表现会一样好... :)

相关内容