por que demora tanto tempo para ler as primeiras linhas do meu arquivo?

3

Eu tenho um arquivo de texto enorme ~ 33Gb e devido ao seu tamanho, eu queria apenas ler as primeiras linhas do arquivo para entender como o arquivo é organizado. Eu tentei head , mas levou uma eternidade para terminar a corrida. É porque no UNIX, head precisa executar o arquivo inteiro antes de poder fazer alguma coisa? Em caso afirmativo, existe uma maneira mais rápida de exibir parte de tal arquivo?

    
por B Chen 26.04.2016 / 20:57

2 respostas

12

Isso não responde realmente à sua pergunta; Eu suspeito que o motivo head é lento é o dado na resposta de Julie Pelletier : o arquivo não não contém nenhum (ou muitos) feeds de linha, então head precisa ler muito para encontrar linhas para mostrar. O head certamente não precisa ler o arquivo inteiro antes de fazer nada, e ele pára de ler assim que tiver o número de linhas solicitado.

Para evitar lentidão relacionada a feeds de linha, ou se você não se importa em ver um número específico de linhas, uma maneira rápida de examinar o início de um arquivo é usar dd ; por exemplo, para ver os primeiros 100 bytes de hugefile :

dd if=hugefile bs=100 count=1

Outra opção, dada em Por que o GNU head / tail leu o arquivo inteiro? , é usar a opção -c para head :

head -c 100 hugefile
    
por 26.04.2016 / 21:39
12

As únicas vezes em que vi casos semelhantes ocorreram quando o arquivo não tinha feeds de linha, pois head apenas lê o número necessário de linhas do arquivo.

    
por 26.04.2016 / 21:05

Tags