Tidak ada, file tidak dapat dialamatkan ke baris.
Tidak ada cara waktu konstan untuk menemukan awal baris n dalam file teks. Anda harus melakukan streaming melalui file dan menghitung baris baru.
Gunakan alat paling sederhana/tercepat yang Anda miliki untuk melakukan pekerjaan itu. Bagi saya, menggunakan head
menghasilkan banyak lebih masuk akal daripada grep
, karena yang terakhir jauh lebih rumit. Saya tidak mengatakan "grep
lambat", sebenarnya tidak, tapi saya akan terkejut jika lebih cepat dari head
Untuk kasus ini. Itu akan menjadi bug di head
, pada dasarnya.
dengan GNU-grep Anda cukup mengatakan
grep --context=10 ...
# print line number 52
sed -n '52p' # method 1
sed '52!d' # method 2
sed '52q;d' # method 3, efficient on large files
metode 3 efisien pada file besar
cara tercepat untuk menampilkan baris tertentu
Saya menemukan dua solusi lain jika Anda tahu nomor barisnya tetapi tidak ada yang lain (tidak mungkin grep):
Dengan asumsi Anda membutuhkan baris 20 hingga 40,
sed -n '20,40p;41q' file_name
atau
awk 'FNR>=20 && FNR<=40' file_name
Saat menggunakan sed
lebih efisien untuk menghentikan pemrosesan setelah mencetak baris terakhir daripada melanjutkan pemrosesan hingga akhir file. Ini sangat penting dalam kasus file besar dan jalur pencetakan di awal. Untuk melakukannya, sed
perintah di atas memperkenalkan instruksi 41q
untuk menghentikan pemrosesan setelah baris 41 karena pada contoh kita hanya tertarik pada baris 20-40. Anda perlu mengubah 41 menjadi baris terakhir yang Anda minati, plus satu.