Qual é a melhor maneira de tirar um segmento de um arquivo de texto? e os muitos outros na barra lateral direita são quase duplicados.
A única diferença é que meu arquivo era muito grande para caber na RAM + VM disponível e, portanto, qualquer coisa que eu tentasse não apenas não faria nada por minutos até ser morto, mas atolaria o sistema. Um deles me fez incapaz de fazer qualquer coisa até que o sistema travasse.
Eu posso escrever um loop no shell ou qualquer outro para ler, contar e descartar linhas até que a contagem (número de linha desejado) seja alcançada, mas talvez já exista um único comando que faça isso?
Depois de tentar algumas coisas (vim, head -X | tail -1, editor de GUI), desisti, apaguei o arquivo e mudei o programa que o criou para me fornecer apenas as linhas necessárias.
Olhando mais longe, Abrindo arquivos de tamanho maior que a RAM, sem troca usada. sugere que vi deveria fazer isso, mas se vi é o mesmo, definitivamente estava fazendo algo que leva minutos, não segundos.
Você deveria tentar
less
.Das páginas de manual:
Eu abro arquivos grandes regularmente com menos e não tenho problemas com o tempo de inicialização. Se você combiná-lo com a opção
-jn
, poderá acessar basicamente todas as partes do arquivo em um tempo trivial.Eu não testei isso porque eu precisaria de um arquivo bem grande, mas combinado com o head, você poderia criar um script também com
more
o que é mais adequado para script.more +$START_LINE_NUMBER | head -n$AMOUNT_OF_LINES
Se eu entendi direito, o cabeçote deve terminar o processo de tubulação depois de obter a quantidade necessária de linhas, portanto, esta solução deve ser a solução de baixo custo que você estava procurando.