Se você tem um arquivo de texto pesado que está tentando processar, a divisão em seções pode, às vezes, 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 se esqueça do sed e do 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 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 bem acima do nosso limite. Precisamos dividir isso em três segmentos. Usaremos o utilitário de divisão para fazer isso.
> split -l 60000 access.log > ls -l
total 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 específico pela metade, teria feito isso:
> split -l 73165 access.log
E isso é tudo que existe para isso.