GNU/Linux >> Tutoriales Linux >  >> Linux

unix:divide un archivo .gz enorme por línea

tubería para dividir use gunzip -c o zcat para abrir el archivo

gunzip -c bigfile.gz | split -l 400000

Agregue especificaciones de salida al comando de división.


La mejor forma de hacerlo depende de lo que quieras:

  • ¿Desea extraer una sola parte del archivo grande?
  • ¿O quieres crear todas las partes de una sola vez?

Si desea una parte única del archivo , tu idea para usar gunzip y head es correcto. Puedes usar:

gunzip -c hugefile.txt.gz | head -n 4000000

Eso generaría las primeras 4000000 líneas en la salida estándar; probablemente desee agregar otra canalización para hacer algo con los datos.

Para obtener las otras partes, usaría una combinación de head y tail , como:

gunzip -c hugefile.txt.gz | head -n 8000000 |tail -n 4000000

para obtener el segundo bloque.

¿Quizás hacer una serie de estos es una solución o el gunzip requeriría suficiente espacio para descomprimir todo el archivo?

No, el gunzip -c no requiere espacio en disco:hace todo en la memoria y luego lo transmite a la salida estándar.

Si desea crear todas las partes de una sola vez , es más eficiente crearlos todos con un solo comando, porque entonces el archivo de entrada solo se lee una vez. Una buena solución es usar split; vea la respuesta de jim mcnamara para más detalles.


Como está trabajando en una transmisión (no rebobinable), querrá usar la forma de cola '+N' para obtener líneas que comiencen desde la línea N en adelante.

zcat hugefile.txt.gz | head -n 40000000
zcat hugefile.txt.gz | tail -n +40000001 | head -n 40000000
zcat hugefile.txt.gz | tail -n +80000001 | head -n 40000000

Linux
  1. Cómo dividir y combinar archivos desde la línea de comandos en Linux

  2. Cómo contar líneas en un archivo en UNIX/Linux

  3. ¿Comando rápido de Unix para mostrar líneas específicas en medio de un archivo?

  4. unix - cabeza Y cola del archivo

  5. Convierta los finales de línea de Unix a Windows

Cómo dividir un archivo grande en partes en números de línea dados

Cómo convertir un archivo de Windows a un archivo UNIX

Comando AWK en Linux/Unix

Tutorial de Unix Sed:Impresión de líneas de archivos usando direcciones y patrones

Tutorial de Unix Sed:anexar, insertar, reemplazar y contar líneas de archivos

Tutorial de Unix Sed:operación de archivos de varias líneas con 6 ejemplos prácticos