Posso dizer 'split' para não dividir linhas?

4

Eu tenho um arquivo de texto grande, que eu preciso dividir em uma série de arquivos menores (menos de 1 MB). Parece que split é o que eu quero aqui.

No entanto, se eu tentar o seguinte (usando 900k como limite para fornecer algum buffer antes do limite máximo de 1MB):

split -a 2 -b 900k total.sql createtables_

Isso fará com que cada parte tenha exatamente 900k (exceto a última parte), provavelmente dividindo as linhas nos locais onde ela divide o arquivo.

Existe uma maneira de dividir apenas os limites da linha? Em outras palavras, fazer com que as peças fiquem o mais próximo possível (sem ultrapassar) o limite especificado no argumento -b , garantindo que ele apenas se divida nos limites da linha?

Ou a única opção é usar a opção -l para dividir para dividir com base na contagem de linhas e usar tentativa e erro para localizar o parâmetro que mantém todos os arquivos abaixo do limite?

Ou a split não é a ferramenta certa para usar?

    
por pkaeding 09.12.2010 / 19:45

2 respostas

3

split -l é o melhor que você pode fazer de forma nativa em Mac OS X . Com GNU coreutils , você pode usar split -C 900k . Você pode instalar o GNU coreutils no OSX, por exemplo, através de Portas Darwion ou Fink ou MacPorts .

    
por 10.12.2010 / 01:24
1

Não tem certeza de qual versão de split você está usando, mas já tentou a opção --line-bytes=BYTES ? No meu sistema, ele também pode ser inserido como -C BYTES .

    
por 09.12.2010 / 20:00