sed -n '10000000,10000020p' filename
Potresti essere in grado di accelerare un po 'in questo modo:
sed -n '10000000,10000020p; 10000021q' filename
In questi comandi, l'opzione -n
provoca la sed
"soppressione della stampa automatica dello spazio del motivo". Il p
comando "stampa lo spazio modello corrente" e il q
comando "Esci immediatamente [s] lo script sed senza elaborare altri input ..." Le virgolette sono dalla sed
man
pagina .
A proposito, il tuo comando
tail -n 10000000 filename | head 10
inizia alla decimilionesima riga dalla fine del file, mentre il comando "centrale" sembrerebbe iniziare alla decimilionesima dall'inizio, il che equivarrebbe a:
head -n 10000010 filename | tail 10
Il problema è che per i file non ordinati con linee di lunghezza variabile qualsiasi processo dovrà passare attraverso il conteggio delle nuove righe. Non c'è modo di scorciatoia.
Se, tuttavia, il file viene ordinato (un file di registro con timestamp, ad esempio) o ha linee di lunghezza fissa, è possibile cercare nel file in base a una posizione in byte. Nell'esempio del file di registro, è possibile eseguire una ricerca binaria per un intervallo di volte, come fa il mio script Python qui *. Nel caso del file con lunghezza fissa del record, è davvero semplice. Basta cercare linelength * linecount
caratteri nel file.
* Continuo a postare un altro aggiornamento a quello script. Forse ci proverò uno di questi giorni.