Dividir um arquivo de texto ao meio (ou qualquer porcentagem) no Ubuntu Linux
Se você tem um arquivo de texto pesado que está tentando processar, a divisão em seções às vezes pode ajudar no tempo de processamento, especialmente se formos importar um arquivo para uma planilha. Ou você pode querer apenas recuperar um determinado conjunto de linhas de um arquivo.
Digite split, wc, tail, cat e grep. (não esqueça sed e awk). O Linux contém um rico conjunto de utilitários para trabalhar com arquivos de texto na linha de comando. Para a nossa tarefa hoje vamos usar split e wc.
Primeiro, vamos dar uma olhada no nosso arquivo de log ... .
ls -l
-rw-r-r-1 thegeek ggroup 42046520 2006-09-19 11:42 access.log
Nós vemos que o tamanho do arquivo é de 42MB. Isso é meio grande… mas com quantas linhas estamos lidando? Se quiséssemos importar isso para o Excel, precisaríamos manter menos de 65 mil linhas.
Vamos verificar a quantidade de linhas no arquivo usando o utilitário wc, que significa "contagem de palavras".
> wc -l access.log
146330 access.log
Estamos muito além do nosso limite. Vamos precisar dividir isso em 3 segmentos. Vamos usar o utilitário split para fazer isso.
> split -l 60000 access.log
ls -ltotal 79124
-rw-rw-r- 1 thegeek ggroup 40465200 2006-09-19 12:00 access.log
-rw-rw-r-1 thegeek ggroup 16598163 2006-09-19 12:05 xaa
-rw-rw-r- 1 thegeek ggroup 16596545 2006-09-19 12:05 xab
-rw-rw-r-1 thegeek ggroup 7270492 2006-09-19 12:05 xac
Agora dividimos nossos arquivos de texto em três arquivos separados, cada um contendo menos de 60000 linhas, o que parecia ser um bom número para escolher. O último arquivo contém o valor restante. Se você fosse cortar esse arquivo em particular ao meio, você teria feito isso:
> split -l 73165 access.log
E isso é tudo.