当前位置:  开发笔记 > 数据库 > 正文

如何编辑多GB的文本文件?Vim不起作用=(

如何解决《如何编辑多GB的文本文件?Vim不起作用=(》经验,为你挑选了7个好方法。

是否有任何编辑器可以编辑多GB的文本文件,可能只是一次只将小部分加载到内存中?它似乎不像Vim可以处理它=(



1> Aaron R...:

Ctrl-C将停止文件加载.如果文件足够小,你可能已经很幸运地加载了所有内容并且刚刚杀死任何后加载步骤.使用此提示时,验证是否已加载整个文件.

Vim可以很好地处理大文件.我刚编辑了一个3.4GB的文件,删除了行等.要记住以下三点:

    按Ctrl-C:Vim尝试最初读取整个文件,执行语法高亮显示和文件中行数等操作.Ctrl-C将取消此枚举(以及语法高亮显示),并且只会加载需要在屏幕上显示.

    Readonly:当文件太大而无法创建时,Vim可能会以只读方式启动.文件复制以执行编辑.我不得不w!保存文件,这是花费最多时间的时间.

    转到行:键入:115355将直接转到115355行,这对于那些大文件来说要快得多.Vim似乎每次加载缓冲线时都从头开始扫描,按住Ctrl-F扫描文件似乎在它结束时变得非常慢.

注意 - 如果您的Vim实例因为按Ctrl-C而处于只读状态,则Vim可能无法将整个文件加载到缓冲区中.如果发生这种情况,保存它只会保存缓冲区中的内容,而不是整个文件.您可以快速检查a G以跳到最后以确保文件中的所有行都在那里.


对我不起作用.我加载一个3GB的文件,按ctrl-c然后显示内容.我可以编辑滚动等但是当我到达加载部分的末尾(让我们说5%)它将不再加载(我被困在文件的一部分,最初加载到我按下ctrl-c的点)
按照这些说明导致我销毁我刚下载的一个巨大的文件.您需要完全删除第2点,因为它基本上会提供导致数据丢失的说明,直到帖子结束时才提及.
能够使用这个建议在vim中处理44千兆字节维基百科xml转储.(CTRL-C).

2> michael..:

它可能是导致它窒息的插件.(语法高亮,折叠等)

你可以在没有插件的情况下运行vim.

vim -u "NONE" hugefile.log

这是极简主义但它至少会给你你习惯的vi动作.

syntax off

是另一个明显的问题.修剪您的安装并获取您需要的内容.您将了解它的功能以及是否需要通过其他方式完成任务.


这仍然将整个文件加载到RAM中...

3> Al pacino..:

如果你是在*nix(假设你要修改的文件只有部分(而很少)),你可以分割的文件(使用split命令),单独进行编辑(使用awk,sed或类似的东西)和之后,你将它们连接起来完成.

cat file2 file3 >> file1


很棒的提示.我有一个13GB(152.000.000行)的sql文件,只是使用"split -l 1000000",然后编辑我想要的一百万行文件,vim工作得很好.花了10分钟才分开.(我尝试使用vim打开原始文件,但是效果太慢了.但它太慢而无法使用.)

4> Amos Folarin..:

使用split + vim解决方案@Al pachio给出的答案略有改进,你可以用glob读取文件,有效地使用文件块作为缓冲区,例如

$ split -l 5000 myBigFile
xaa
xab
xac
...

$ vim xa*
#edit the files

:nw  #skip forward and write
:n!  #skip forward and don't save 

:Nw  #skip back and write
:N!  #skip back and don't save



5> RedBlueThing..:

您可能想要查看此VIM插件,该插件在加载大文件时为了速度而禁用某些vim功能.



6> MBCook..:

我试图这样做,当我需要对SQL转储进行一些小改动时,大多数文件大约为1 GB.我在Windows上,这是一个很大的痛苦.这非常困难.

显而易见的问题是"为什么你需要?" 我可以告诉你,不止一次尝试这个经验,你可能真的想尝试找到另一种方式.

你是怎么做到的?我有几种方法可以做到.有时我可以通过vim或nano来打开文件,我可以使用它们.这是一个非常艰难的痛苦,但它确实有效.

当这不起作用时(如你的情况),你只有几个选项.您可以编写一个小程序来进行所需的更改(例如,搜索和替换).您可以使用可能能够执行此操作的命令行程序(也许可以使用sed/awk/grep/etc来完成?)

如果那些不起作用,你总是可以将文件拆分成块(类似于拆分是显而易见的选择,但你可以使用head/tail来获得你想要的部分),然后编辑需要它的部分,然后重新组合.

相信我,试着寻找另一种方式.


在这种情况下,通常sed是你的朋友.你的编辑真的不喜欢在文件顶部插入几个字符并想出如何推倒其他所有内容的想法.

7> John Y..:

我认为十六进制编辑器处理大文件是很常见的。在Windows上,我使用HxD,它声称可以处理高达8 EB(80亿千兆字节)的文件。


我很想知道他们是如何测试的...:P
推荐阅读
黄晓敏3023
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有