Я попытался открыть в VIM огромный (~ 2 ГБ) файл, но он задохнулся. На самом деле мне не нужно редактировать файл, просто эффективно прыгайте.
Как я могу работать с очень большими файлами в VIM?
vim
large-files
hoju
источник
источник
:set binary
сначала ...Ответы:
Сегодня мне нужно было отредактировать файл размером 12 ГБ. Плагин vim LargeFile у меня не работал. Он по-прежнему израсходовал всю мою память, а затем напечатал сообщение об ошибке :-(. Я не мог использовать hexedit ни для одного из них, так как он не может ничего вставить, просто перезаписать. Вот альтернативный подход:
Вы разделяете файл, редактируете части, а затем повторно объединяете его. Однако вам все равно нужно вдвое больше дискового пространства.
Найдите что-нибудь, окружающее строку, которую вы хотите отредактировать:
Извлеките этот диапазон файла. Скажем, строки, которые вы хотите отредактировать, находятся в строках 4 и 5. Затем выполните:
-n
необходим для подавления поведения sed по умолчанию для печати всего.4,5p
печатает строки 4 и 55q
прерывает sed после обработки строки 5Редактируйте
SMALLPART
с помощью вашего любимого редактора.Объедините файл:
HUGEFILE.new
теперь будет ваш отредактированный файл, вы можете удалить оригиналHUGEFILE
.источник
Этот вопрос повторялся много лет. (Числа продолжают меняться, но концепция та же: как просматривать или редактировать файлы, размер которых превышает размер памяти?)
Очевидно,
more
илиless
это хороший подход к простому чтению файлов -less
даже предлагаетvi
, как привязки для прокрутки и поиска.Freshmeat поиск на «большие файлы» предполагает , что два редактора будут особенно подходят для ваших нужд.
Один из них: lfhex ... большой шестнадцатеричный редактор файлов (который зависит от Qt). Это, очевидно, предполагает использование графического интерфейса.
Другой, казалось бы, подходит для использования в консоли: hed ... и он утверждает, что имеет
vim
-подобный интерфейс (включаяex
режим?).Я уверен, что видел другие редакторы для Linux / UNIX, которые могли листать файлы, не загружая их в память целиком. Однако я не помню их имен. Я делаю этот ответ «вики», чтобы побудить других добавлять свои ссылки на таких редакторов. (Да, я знаком со способами решения проблемы с помощью
split
иcat
; но я думаю о редакторах, особенно о редакторах console / curses, которые могут обойтись без этого и сэкономить нам время / задержки и накладные расходы на дисковое пространство, которые влекут за собой такие подходы) .источник
Поскольку вам не нужно фактически редактировать файл:
view
(илиvim -R
) должны достаточно хорошо работать с большими файлами.more
илиless
источник
view
(только что попробовал и рассчитал). Конечно, это не совсем мгновенно, но работает.Я написал небольшой сценарий на основе ответа Флориана, в котором используется nano (мой любимый редактор):
Используйте это так:
В этом примере nano откроет строки с 3 по 8, вы можете их отредактировать, а когда вы сохраните и закроете, эти строки в огромном файле будут автоматически перезаписаны вашими сохраненными строками.
источник
У меня была та же проблема, но это был дамп mysql объемом 300 ГБ, и я хотел избавиться от него
DROP
и изменить егоCREATE TABLE
на,CREATE TABLE IF NOT EXISTS
поэтому не хотел запускать два вызоваsed
. Я написал этот быстрый сценарий Ruby, чтобы обмануть файл этими изменениями:Вызывается как
источник
chmod +x mreplace.rb
сначала exe , вы также можете простоruby mreplace.rb ..
Для больших однострочных строк (печатает символы от
1
до99
):источник
Уже поздно, но если вы просто хотите перемещаться по файлу, не редактируя его,
cat
вы тоже можете это сделать.или, альтернативно, просто:
источник
cat
сначала указывать файл безумно глупо, так как это либо означает, что файл полностью находится в памяти (так чтоless
можно искать файл), либо его нельзя искать вообще;cat
просто дает статический выходной поток.emacs очень хорошо работает с файлами размером до 100 мегабайт, я без особых проблем использовал его для файлов журналов.
Но обычно, когда у меня есть какая-то задача анализа, я считаю, что лучше написать сценарий на Perl.
источник
Старая нить. Но тем не менее (каламбур :)).
less работает эффективно, если вы не хотите редактировать, а просто осмотритесь, что имеет место при проверке огромных файлов журнала.
Искать в less работает как vi
Самое приятное, что он доступен по умолчанию в большинстве дистрибутивов. Так что не будет проблем и для производственной среды.
источник
это старый, но используйте nano, vim или gvim
источник