Intenté abrir un archivo enorme (~ 2GB) en VIM pero se ahogó. En realidad, no necesito editar el archivo, simplemente saltar de manera eficiente.
¿Cómo puedo trabajar con archivos muy grandes en VIM?
vim
large-files
hoju
fuente
fuente
:set binary
primero ...Respuestas:
Tenía un archivo de 12 GB para editar hoy. El complemento vim LargeFile no funcionó para mí. Todavía usó toda mi memoria y luego imprimió un mensaje de error :-(. No pude usar hexedit para ninguno de los dos, ya que no puede insertar nada, solo sobrescribir. Aquí hay un enfoque alternativo:
Divide el archivo, edita las partes y luego lo recombina. Sin embargo, todavía necesita el doble de espacio en disco.
Grep para algo alrededor de la línea que le gustaría editar:
Extraiga ese rango del archivo. Digamos que las líneas que desea editar están en la línea 4 y 5. Luego haga lo siguiente:
-n
requiere la opción para suprimir el comportamiento predeterminado de sed para imprimir todo4,5p
imprime las líneas 4 y 55q
aborta sed después de la línea de procesamiento 5Edite
SMALLPART
con su editor favorito.Combinar el archivo:
HUGEFILE.new
ahora será su archivo editado, puede eliminar el originalHUGEFILE
.fuente
Ésta ha sido una pregunta recurrente durante muchos años. (Los números siguen cambiando, pero el concepto es el mismo: ¿cómo veo o edito archivos que son más grandes que la memoria?)
Obviamente,
more
oless
son buenos enfoques para simplemente leer los archivos,less
incluso ofrecenvi
combinaciones de teclas para desplazarse y buscar.Una búsqueda de Freshmeat en "archivos grandes" sugiere que dos editores se adaptarían particularmente a sus necesidades.
Uno sería: lfhex ... un editor hexadecimal de archivos grandes (que depende de Qt). Ese, obviamente, implica el uso de una GUI.
Otro parecería ser adecuado para el uso de la consola: hed ... y afirma tener una
vim
interfaz similar (¿incluye unex
modo?).Estoy seguro de que he visto otros editores para Linux / UNIX que pudieron desplazarse por los archivos sin cargarlos por completo en la memoria. Sin embargo, no recuerdo ninguno de sus nombres. Estoy haciendo de esta respuesta una entrada "wiki" para animar a otros a agregar sus enlaces a dichos editores. (Sí, estoy familiarizado con las formas de solucionar el problema usando
split
ycat
; pero estoy pensando en editores, especialmente editores de consola / curses que pueden prescindir de eso y ahorrarnos el tiempo / latencias y la sobrecarga de espacio en disco que conllevan tales enfoques) .fuente
Dado que no necesita editar el archivo:
view
(ovim -R
) debería funcionar razonablemente bien en archivos grandes.more
oless
fuente
view
(solo probado y cronometrado). Por supuesto, eso no es exactamente instantáneo, pero funciona.Escribí un pequeño guión basado en la respuesta de Florian que usa nano (mi editor favorito):
Úselo así:
En ese ejemplo, nano abrirá las líneas 3 a 8, puede editarlas, y cuando guarde y salga, esas líneas en el enorme archivo se sobrescribirán automáticamente con sus líneas guardadas.
fuente
Tuve el mismo problema, pero era un volcado de mysql de 300 GB y quería deshacerme de
DROP
y cambiarCREATE TABLE
a,CREATE TABLE IF NOT EXISTS
por lo que no quería ejecutar dos invocaciones desed
. Escribí este rápido script de Ruby para engañar al archivo con esos cambios:Invocado como
fuente
chmod +x mreplace.rb
primero, también podría simplementeruby mreplace.rb ..
Para grandes frases de una sola línea (imprime caracteres de
1
a99
):fuente
Ya es tarde, pero si solo desea navegar por el archivo sin editarlo, también
cat
puede hacer el trabajo.o alternativamente simple:
fuente
cat
ting el archivo primero es increíblemente estúpido, ya que significa que el archivo estaría completamente en la memoria (por lo queless
puede buscar el archivo) o no se puede buscar en absoluto;cat
solo da un flujo de salida estático.emacs funciona muy bien con archivos de cientos de megabytes, lo he usado en archivos de registro sin demasiados problemas.
Pero generalmente cuando tengo algún tipo de tarea de análisis, creo que escribir un script en Perl es una mejor opción.
fuente
Hilo antiguo. Pero sin embargo (juego de palabras :)).
less funciona de manera eficiente si no desea editar y simplemente mirar a su alrededor, que es el caso de examinar archivos de registro enormes.
Buscar en menos obras como vi
La mejor parte es que está disponible de forma predeterminada en la mayoría de las distribuciones. Así que tampoco será un problema para el entorno de producción.
fuente
esto es antiguo, pero usa nano, vim o gvim
fuente