sed -n '10000000,10000020p' filename
Anda mungkin bisa mempercepatnya sedikit seperti ini:
sed -n '10000000,10000020p; 10000021q' filename
Dalam perintah-perintah itu, opsi -nmenyebabkan sed"menekan pencetakan otomatis ruang pola". The pperintah "print [s] ruang pola saat ini" dan qperintah "Segera berhenti [s] script sed tanpa pengolahan lagi masukan ..." Kutipan berasal dari sed manhalaman .
Ngomong-ngomong, perintahmu
tail -n 10000000 filename | head 10
dimulai pada baris sepersejuta dari akhir file, sedangkan perintah "tengah" Anda tampaknya mulai pada sepersejuta dari awal yang setara dengan:
head -n 10000010 filename | tail 10
Masalahnya adalah bahwa untuk file yang tidak disortir dengan garis panjang variabel, proses apa pun harus melalui file penghitungan baris baru. Tidak ada cara untuk pintas itu.
Namun, jika file diurutkan (file log dengan stempel waktu, misalnya) atau memiliki garis panjang tetap, maka Anda dapat mencari ke dalam file berdasarkan posisi byte. Pada contoh file log, Anda bisa melakukan pencarian biner untuk berbagai kali sebagai script Python saya di sini * tidak. Dalam kasus file dengan catatan panjang tetap, sangat mudah. Anda hanya mencari linelength * linecountkarakter ke dalam file.
* Saya tetap ingin memposting pembaruan lain untuk skrip itu. Mungkin aku akan menyiasatinya suatu hari nanti.