Dividir arquivos grandes com base no número da linha, executá-lo e, em seguida, anexar a saída final em um arquivo

0

Estou usando um pacote R. Os arquivos de entrada necessários para executar no pacote são grandes (tão grandes quanto 65 Gb de tamanho) Então eu decidi dividir o arquivo em pedaços com base no número da linha e depois mesclar a saída final em um único arquivo. Também quero fazer todo o processo no PERL.

Como devo escrever um código para o mesmo?

    
por user8393448 25.01.2018 / 09:41

2 respostas

0
split -l numberoflines inputfile

Um arquivo enorme será dividido em xaa, xab, xac e assim por diante

finalmente você pode concatenar como cat xa* >> final_output_file

Se eu quiser dividir o arquivo para cada 65 linhas, use o comando abaixo

exemplo

split -l 65 inputfile
    
por 25.01.2018 / 11:32
0

Para dividir o arquivo original enorme em arquivos N chunks, você pode usar abaixo de awk :

awk 'NR%l==1{fileName=sprintf("file%d",((++c)))}{print >fileName}' 
l=$(( ($(wc -l <originalFileName)+N-1)/N )) originalFileName

Observação : substitua N pelo número real de arquivos de blocos necessários para dividir o originalFileNamee.

Em seguida, processe os arquivos pequenos e, no final, mescle-os.

cat file*>> originalFileName.new
    
por 25.01.2018 / 10:47

Tags