Como dividir um arquivo de 6 ou 7 GB em vários arquivos de até 2 GB sem dividir a entrada?

1

Meu nível tem arquivos de tamanho de 6 a 10 GB como entrada. Esses arquivos contêm várias linhas de dados. A capacidade de entrada máxima do próximo nível é de 2 GB. Então eu tenho que dividir esses arquivos 6-10 GB em vários arquivos sub-2 GB sem quebrar linhas! Basicamente eu tenho que dividir um arquivo baseado no tamanho, mas sem quebrar linhas.

    
por Ashok A.L 27.07.2016 / 19:57

2 respostas

2

Se você não tem linhas com mais de 2 GB, você pode usar

split --line-bytes=2GB

No manual de informações:

‘--line-bytes=SIZE’
 Put into each output file as many complete lines of INPUT as
 possible without exceeding SIZE bytes.  Individual lines or records
 longer than SIZE bytes are broken into multiple files.
    
por 27.07.2016 / 20:14
1

Eu acredito que isso irá fornecer quase o que você precisa

split -n

-n, --number=CHUNKS
              generate CHUNKS output files.


CHUNKS may be: 
N       split into N files based on size of input
K/N     output Kth of N to stdout
l/N     split into N files without splitting lines
l/K/N   output Kth of N to stdout without splitting lines
r/N     like 'l' but use round robin distribution
r/K/N   likewise but only output Kth of N to stdout
    
por 27.07.2016 / 20:11