Существуют ли какие-либо редакторы, которые могут редактировать текстовые файлы размером в несколько гигабайт, возможно, загружая в память только небольшие части за раз? Не похоже, что Vim может с этим справиться = (
Существуют ли какие-либо редакторы, которые могут редактировать текстовые файлы размером в несколько гигабайт, возможно, загружая в память только небольшие части за раз? Не похоже, что Vim может с этим справиться = (
Ответы:
Если вы на * NIX (и предполагая , что вы должны изменить только части файла (и редко)), вы можете разделить файлы ( с помощью split
команды), редактировать их по отдельности ( с использованием awk
, sed
или что - то подобное) и сцепить их после того, как вам сделано.
cat file2 file3 >> file1
Ctrl-C остановит загрузку файла. Если файл достаточно мал, вам, возможно, повезло, что вы загрузили все содержимое и просто убили все шаги пост-загрузки. При использовании этого совета убедитесь, что загружен весь файл.
Vim неплохо справляется с большими файлами. Я только что отредактировал файл размером 3,4 ГБ, удалив строки и т. Д. Следует помнить о трех вещах:
:115355
приведет вас прямо к строке 115355, что намного быстрее в таких больших файлах. Кажется, что Vim начинает сканирование с самого начала каждый раз, когда загружает буфер строк, и удерживание Ctrl-F для сканирования файла кажется очень медленным ближе к его концу.Примечание. Если ваш экземпляр Vim находится в режиме только для чтения, потому что вы нажали Ctrl-C, возможно, Vim не загрузил весь файл в буфер. Если это произойдет, при сохранении сохранится только то, что находится в буфере, а не весь файл . Вы можете быстро проверить с помощью a, G
чтобы перейти к концу и убедиться, что все строки в вашем файле присутствуют.
Это могут быть плагины, которые заставляют его задыхаться. (выделение синтаксиса, складки и т. д.)
Вы можете запускать vim без плагинов.
vim -u "NONE" hugefile.log
Это минималистично, но по крайней мере даст вам привычные движения vi.
syntax off
еще один очевидный. Сократите установку и найдите то, что вам нужно. Вы узнаете, на что он способен и нужно ли вам решать задачу другими способами.
Небольшое улучшение ответа, данного @Al pachio, с решением split + vim, вы можете читать файлы с помощью 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
Возможно, вы захотите проверить этот плагин VIM, который отключает определенные функции vim в интересах скорости при загрузке больших файлов.
Я пытался сделать это, в основном с файлами размером около 1 ГБ, когда мне нужно было внести небольшие изменения в дамп SQL. Я использую Windows, и это очень больно. Это серьезно сложно.
Возникает очевидный вопрос: «а зачем вам это нужно?». Я могу сказать вам по опыту, когда вам приходилось пробовать это более одного раза, вы, вероятно, действительно хотите попробовать найти другой способ.
Итак, как вы это делаете? Я сделал это несколькими способами. Иногда я могу заставить vim или nano открыть файл, и я могу их использовать. Это действительно тяжелая боль, но она работает.
Когда это не сработает (как в вашем случае), у вас есть только несколько вариантов. Вы можете написать небольшую программу для внесения необходимых вам изменений (например, поиск и замену). Вы можете использовать программу командной строки, которая может это сделать (может быть, это можно сделать с помощью sed / awk / grep / etc?)
Если это не сработает, вы всегда можете разделить файл на куски (что-то вроде split является очевидным выбором, но вы можете использовать голову / хвост, чтобы получить нужную часть), а затем отредактировать части, которые в ней нуждаются, а потом рекомбинировать.
Однако поверьте мне, попробуйте найти другой способ.
Я использую vim 7.3.3 в Win7 x64 с плагином LargeFile Чарльза Кэмпбелла для обработки многогигабайтных простых текстовых файлов. Это действительно хорошо работает.
Надеюсь, ты справишься.
Вау, никогда не удавалось заставить vim подавиться, даже с одним или двумя ГБ. Я слышал, что UltraEdit (в Windows) и BBEdit (на Mac) даже больше подходят для файлов еще большего размера, но у меня нет личного опыта.
Раньше я открывал файл размером до 3 гигабайт с помощью этого инструмента http://csved.sjfrancke.nl/
Лично мне нравится UltraEdit . Вот их небольшой рассказ о больших файлах .
Единственное, что я смог использовать для чего-то подобного, - это мой любимый шестнадцатеричный редактор Mac, 0XED. Однако это было с файлами, которые я считал большими - десятки мегабайт. Я не уверен, как далеко это зайдет. Однако я почти уверен, что он загружает в память только части файла за раз.