quick tail em um arquivo enorme no linux

3

Eu preciso das últimas 10 milhões de linhas de um arquivo de 100 milhões de linhas.

tail -n 10000000 $in_file>$out_file

no entanto, o comando acima demorou mais de 1 dia e ainda está em andamento. Acho que posso usar o comando legal para atribuir mais prioridade ao processo, mas quero saber se existe uma maneira fundamentalmente melhor.

    
por user15586 06.05.2013 / 04:04

1 resposta

3

Além de dividir o arquivo em alguns arquivos menores, você pode simplesmente abrir o arquivo e procurá-lo para algo que possa ser visto como próximo do fim do arquivo.

Depois disso, você lê o máximo de linhas possíveis e, se alcançar EOF sem todas as suas 10000000 linhas desejadas, você só precisará fazer um diff na primeira posição você adivinhou , e uma nova posição - anterior - e tente ler as linhas n = diff .

Eu realmente não sei se tail faz isso, ou se há alguma ferramenta POSIX disponível que realiza este tipo de operação; implementar isso não deve levar mais de cinco minutos, eu acho (: Isso pode ser de alguma ajuda.

    
por 06.05.2013 / 04:25

Tags