Estoy seguro de que alguien ha tenido la siguiente necesidad, ¿cuál es una forma rápida de dividir un gran archivo .gz por línea? El archivo de texto subyacente tiene 120 millones de filas. No tengo suficiente espacio en el disco para comprimir todo el archivo a la vez, así que me preguntaba si alguien conoce un script o herramienta bash / perl que pueda dividir el archivo (ya sea .gz o .txt interno) en archivos de 3x 40 millones de líneas . es decir, llamarlo así:
bash splitter.sh hugefile.txt.gz 4000000 1
would get lines 1 to 40 mn
bash splitter.sh hugefile.txt.gz 4000000 2
would get lines 40mn to 80 mn
bash splitter.sh hugefile.txt.gz 4000000 3
would get lines 80mn to 120 mn
Tal vez hacer una serie de estos sea una solución o el gunzip -c requeriría suficiente espacio para descomprimir todo el archivo (es decir, el problema original): gunzip -c hugefile.txt.gz | cabeza 4000000
Nota: No puedo obtener un disco extra.
¡Gracias!