sed -n '10000000,10000020p' filename
Você pode acelerar isso um pouco assim:
sed -n '10000000,10000020p; 10000021q' filename
Nesses comandos, a opção -n
faz sed
com que "suprima a impressão automática do espaço do padrão". O p
comando "imprime [s] o espaço padrão atual" e o q
comando "Encerra imediatamente [s] o script sed sem processar mais nenhuma entrada ..." As aspas são da sed
man
página .
A propósito, seu comando
tail -n 10000000 filename | head 10
inicia na décima milionésima linha do final do arquivo, enquanto o comando "intermediário" parece começar na décima milionésima parte do início, o que seria equivalente a:
head -n 10000010 filename | tail 10
O problema é que, para arquivos não classificados com linhas de comprimento variável, qualquer processo precisará passar pelo arquivo contando novas linhas. Não há como atalho isso.
Se, no entanto, o arquivo for classificado (um arquivo de log com registros de data e hora, por exemplo) ou tiver linhas de comprimento fixo, você poderá procurar no arquivo com base na posição de bytes. No exemplo do arquivo de log, você pode fazer uma pesquisa binária por um intervalo de vezes como o meu script Python aqui *. No caso do arquivo com tamanho fixo de registro, é realmente fácil. Você apenas procura linelength * linecount
caracteres no arquivo.
* Eu mantenho a intenção de postar mais uma atualização para esse script. Talvez eu consiga resolver isso um dia desses.