Problemas ao dividir arquivos CSV

1

Estou tentando dividir um arquivo csv em vários arquivos usando o comando abaixo ... Esse comando é dividido em 5 arquivos, mas os dados são truncados em um dos arquivos?

Como corrijo este problema?

>>split -n 5 -d -a 2  testfile

Eu tenho 5001 linhas na minha entrada, mas a divisão se divide em

file1 - 932
file2 - 910
file3 - 1149
file4 - 1044
file5 - 966

Não deveria ser 1000 linhas por arquivo?

    
por user1050619 29.04.2014 / 04:57

2 respostas

4

split -n 5 divide o arquivo em cinco partes, fazendo com que todos, exceto a última parte, tenham o mesmo número de bytes .

Se você quiser dividir somente limites de linha, use:

split -n l/5 -d -a 2  testfile

Isso está detalhado nos documentos do GNU para split da seguinte forma :

‘-n chunks’
‘--number=chunks’
     Split input to chunks output files where chunks may be:

          n      generate n files based on current size of input
          k/n    only output kth of n to stdout
          l/n    generate n files without splitting lines
          l/k/n  likewise but only output kth of n to stdout
          r/n    like ‘l’ but use round robin distribution
          r/k/n  likewise but only output kth of n to stdout

Outra opção é especificar quantas linhas você deseja em cada arquivo de saída:

split -l 1000 -d -a 2  testfile

O acima divide o arquivo em partes, cada uma (exceto a última) com 1.000 linhas. Isso está documentado como:

‘-l lines’
‘--lines=lines’
     Put lines lines of input into each output file.

    
por 29.04.2014 / 06:24
3

Use a opção -l de split . Na página do manual:

 -l line_count
         Create smaller files n lines in length.

por exemplo.

split -l 1000 afile.txt
    
por 29.04.2014 / 05:17