Tenho certeza que alguém teve a necessidade abaixo, qual é uma maneira rápida de dividir um arquivo .gz enorme por linha? O arquivo de texto subjacente possui 120 milhões de linhas. Eu não tenho espaço em disco suficiente para compactar o arquivo inteiro de uma só vez, então eu queria saber se alguém conhece um script ou ferramenta bash / perl que possa dividir o arquivo (o .gz ou o .txt interno) em arquivos de linha de 3x 40mn . ou seja, chamando assim:
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
Talvez esteja fazendo uma série dessas soluções ou o gunzip -c exigiria espaço suficiente para que o arquivo inteiro fosse descompactado (ou seja, o problema original): gunzip -c hugefile.txt.gz | cabeça 4000000
Nota: Não consigo obter disco extra.
Obrigado!