GNU/Linux >> Belajar Linux >  >> Linux

Perintah unix cepat untuk menampilkan baris tertentu di tengah file?

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.


Linux
  1. Sedikit keajaiban penyalinan file SSH di baris perintah

  2. Memanipulasi teks pada baris perintah dengan sed

  3. Bagaimana Melewati Garis File?

  1. Bagaimana Perintah Sed '1!g;h;$!d' Membalikkan Isi File?

  2. Menghapus Baris Tertentu dari File di Baris Perintah Linux

  3. Buat file dengan menggunakan baris perintah di Linux

  1. 4 alat untuk mengunduh file apa pun menggunakan baris perintah di Linux

  2. Cara Menghitung baris dalam file di UNIX/Linux

  3. Bagaimana cara menggunakan baris file sebagai argumen perintah?