sed -n '10000000,10000020p' filename
Es posible que pueda acelerar eso un poco así:
sed -n '10000000,10000020p; 10000021q' filename
En esos comandos, la opción -n
hace sed
que "se suprima la impresión automática del espacio del patrón". El p
comando "imprime [s] el espacio del patrón actual" y el q
comando "Salga [s] inmediatamente de la secuencia de comandos sed sin procesar más entradas ..." Las comillas son de la sed
man
página .
Por cierto, tu comando
tail -n 10000000 filename | head 10
comienza en la línea número diez millones desde el final del archivo, mientras que su comando "medio" parece comenzar en el número diez millones desde el principio, lo que sería equivalente a:
head -n 10000010 filename | tail 10
El problema es que para los archivos sin clasificar con líneas de longitud variable, cualquier proceso tendrá que pasar por el archivo contando nuevas líneas. No hay forma de atajar eso.
Sin embargo, si el archivo está ordenado (un archivo de registro con marcas de tiempo, por ejemplo) o tiene líneas de longitud fija, puede buscar en el archivo en función de una posición de byte. En el ejemplo del archivo de registro, podría hacer una búsqueda binaria varias veces como lo hace mi script de Python aquí *. En el caso del archivo de longitud de registro fija, es realmente fácil. Solo busca linelength * linecount
personajes en el archivo.
* Sigo teniendo la intención de publicar otra actualización de ese script. Tal vez lo logre uno de estos días.