sed -n '10000000,10000020p' filename
Anda mungkin bisa mempercepatnya sedikit seperti ini:
sed -n '10000000,10000020p; 10000021q' filename
Dalam perintah-perintah itu, opsi -n
menyebabkan sed
"menekan pencetakan otomatis ruang pola". The p
perintah "print [s] ruang pola saat ini" dan q
perintah "Segera berhenti [s] script sed tanpa pengolahan lagi masukan ..." Kutipan berasal dari sed
man
halaman .
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 * linecount
karakter ke dalam file.
* Saya tetap ingin memposting pembaruan lain untuk skrip itu. Mungkin aku akan menyiasatinya suatu hari nanti.