Существуют ли какие-либо редакторы, которые могут редактировать текстовые файлы с несколькими гигабайтами, возможно, только загружая небольшие порции в память сразу? Кажется, что Vim не может справиться с этим = (
Как редактировать многогигабайтные текстовые файлы? Vim не работает = (
Ответ 1
Если вы находитесь на * nix (и если вам нужно изменить только части файла (и редко)), вы можете разбить файлы (используя команду split
), отредактировать их индивидуально (используя awk
, sed
или что-то подобное) и соединить их после того, как вы закончите.
cat file2 file3 >> file1
Ответ 2
Ctrl-C остановит загрузку файла. Если файл достаточно мал, вам, возможно, повезло, что он загрузил все содержимое и просто убил любые шаги после загрузки. Убедитесь, что весь файл загружен при использовании этого наконечника.
Vim может обрабатывать большие файлы довольно хорошо. Я только что отредактировал файл в 3,4 ГБ, удалив строки и т.д. Три вещи, которые нужно иметь в виду:
- Нажмите Ctrl-C: Vim сначала пытается прочитать весь файл, чтобы сделать такие вещи, как подсветка синтаксиса и количество строк в файле, и т.д. Ctrl-C отменит это перечисление (и подсветку синтаксиса), и оно будет загружайте только то, что нужно отображать на экране.
- Readonly: Vim, скорее всего, начнет читать только в том случае, если файл слишком велик для его создания. копию файла для выполнения изменений. Я должен был! чтобы сохранить файл, и что, когда это заняло больше всего времени.
- Перейти к строке: Ввод
:115355
приведет вас непосредственно к строке 115355, которая намного быстрее будет проходить в этих больших файлах. Кажется, что Vim начинает сканирование с самого начала каждый раз, когда он загружает буфер строк, а удерживание Ctrl-F для сканирования через файл кажется очень медленным ближе к концу.
Примечание. Если ваш экземпляр Vim находится в режиме readonly, потому что вы нажмете Ctrl-C, возможно, что Vim не загрузил весь файл в буфер. Если это произойдет, сохранение сохранит только то, что находится в буфере, а не весь файл. Вы можете быстро проверить с помощью G
, чтобы перейти к концу, чтобы убедиться, что все строки в вашем файле есть.
Ответ 3
Это могут быть плагины, которые вызывают его удушье. (подсветка синтаксиса, сгибы и т.д.)
Вы можете запустить Vim без плагинов.
vim -u "NONE" hugefile.log
Он минималистский, но он, по крайней мере, даст вам те движения, к которым вы привыкли.
syntax off
еще один очевидный. Сократите вашу установку и найдите то, что вам нужно. Вы узнаете, на что он способен, и если вам нужно выполнить задачу с помощью других средств.
Ответ 4
Небольшое улучшение ответа, заданного @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
Ответ 5
Возможно, вы захотите проверить этот VIM-плагин, который отключает некоторые функции vim в интересах скорости при загрузке больших файлов.
Ответ 6
Я пытался это сделать, в основном с файлами размером около 1 ГБ, когда мне нужно было внести небольшое изменение в дамп SQL. Я нахожусь в Windows, что делает его главной болью. Это серьезно сложно.
Очевидный вопрос: зачем вам это нужно? Я могу сказать вам по опыту, чтобы попробовать это более одного раза, вы, вероятно, действительно хотите попытаться найти другой способ.
Итак, как вы это делаете? Есть несколько способов, которыми я это сделал. Иногда я могу получить vim или nano, чтобы открыть файл, и я могу использовать их. Это очень тяжелая боль, но она работает.
Если это не работает (как в вашем случае), у вас есть только несколько вариантов. Вы можете написать небольшую программу для внесения необходимых изменений (например, поиск и замена). Вы можете использовать программу командной строки, которая может это сделать (возможно, это может быть выполнено с помощью sed/awk/grep/etc?)
Если они не работают, вы всегда можете разделить файл на куски (что-то вроде split, являющегося очевидным выбором, но вы может использовать головку/хвост, чтобы получить нужную вам часть), а затем отредактировать часть (-ы), которая в ней нуждается, и рекомбинировать позже.
Поверьте мне, попытайтесь найти другой способ.
Ответ 7
Я думаю, что для шестимерных редакторов достаточно просто обрабатывать огромные файлы. В Windows я использую HxD, который утверждает, что обрабатывает файлы до 8 EB (8 миллиардов гигабайт).
Ответ 8
Я использую vim 7.3.3 на Win7 x64 с плагин LargeFile от Charles Campbell для обработки текстовых файлов с несколькими гигабайтами. Он работает очень хорошо.
Надеюсь, вы поправитесь.
Ответ 9
Ничего себе, никогда не удалось заставить vim задохнуться, даже с GB или двумя. Я слышал, что UltraEdit (в Windows) и BBEdit (на компьютерах Mac) еще более подходят для файлов с более высоким размером, но у меня нет личного опыта.
Ответ 10
В прошлом я открывал файл 3 гига с помощью этого инструмента http://csved.sjfrancke.nl/
Ответ 11
Я использовал TextPad для больших файлов журнала, у которого нет верхнего предела.
Ответ 12
Лично мне нравится UltraEdit. Вот их маленькие spiel для больших файлов.
Ответ 13
Я использовал встроенный редактор/просмотрщик FAR Commander для супер-больших файлов журнала.
Ответ 14
Единственное, что мне удалось использовать для чего-то подобного, это мой любимый редактор Mac hex, 0XED. Однако это было с файлами, которые я считал большими на десятки мегабайт. Я не уверен, как далеко он пойдет. Я уверен, что он загружает только части файла в память сразу.
Ответ 15
В прошлом я успешно использовал подход split/edit/join, когда файлы становятся очень большими. Для этого вам нужно знать, где находится отредактированный текст, в исходном файле.