Unix cat mulai dari garis

39

Apa cara terbaik untuk menghasilkan file mulai dari baris tertentu (jumlah besar seperti 70000). Sesuatu seperti:

cat --line=70000 <file>
vonhogen
sumber

Jawaban:

59

Lihatlah ekornya, lebih tepatnya, itu --lines = + N switch:

tail --lines=+100 <file>
Svend
sumber
Wow. Saya tidak tahu ini bahkan setelah menggunakan ini di linux selama 8 tahun! Saya selalu menggunakan bash fn! Terima kasih! getFromLine () {lineno = wc -l $1 | awk '{print $1}'; lineno = expr $lineno - $2; ekor -n $ lineno $ 1; }
secureBadshah
2
Sebagai catatan, ini tidak berfungsi pada Mountain Lion (Darwin Kernel Versi 13.1.0). Varian untuk Singa Gunung adalahtail -n
Kaushik Ghose
21

Cara yang paling jelas adalah tail. Sintaksnya mungkin sedikit berbeda tergantung pada OS apa yang Anda gunakan:

tail -n +70000

Jika Anda tidak bisa mulai tailbekerja, Anda bisa menggunakan sed, tetapi mungkin berakhir lebih lambat:

sed -pe '1,69999d'
Chris Johnsen
sumber
tailbekerja dengan baik di MinGW (pada file teks 600 MB). Waktu runtime hanya beberapa detik (tetapi file input sudah bisa berada dalam cache file).
Peter Mortensen
2

Jika alih-alih nomor baris Anda harus mulai mendaftar di baris yang berisi yang diberikan $phrase, coba yang berikut ini.

more -1000 +/"$phrase" yourfilename | sed '1,4d'

-1000 akan terus menampilkan teks hingga 1000 baris; Anda dapat mengubah ini sesuai kebutuhan. The sedperintah akan memenggal 4 baris pertama dari output, yang secara otomatis dimasukkan oleh more, mengandung baris kosong, pesan "... melompat-lompat", dan dua baris sebelumnya garis start yang Anda inginkan. Saya kira ini dapat bervariasi tergantung pada sistem Anda.

AlohaUnixFan
sumber
2

Anda dapat menggunakan parameter NR dengan perintah awk :

cat <file> | awk '{if (NR>=7000) print}'
Gefolge
sumber
2
Anda dapat menggunakan perintah ini dengan batas lain. Sebagai sampel: hanya cat messages | awk '{if (NR>=7000 && NR <7003) print}'menampilkan baris 7000, 7001, dan 7002.
Gefolge
-1

ekor +250

lebih lanjut tentang perintah unix cat


sumber
2
tautan yang menarik, tetapi itu tidak benar-benar memberikan informasi apa pun yang berlaku untuk pertanyaan ini, dan tailsaran Anda sama dengan jawaban yang diterima dan lainnya dari minggu yang lalu. kenapa repot memposting?
quack quixote
Tautannya rusak -...can't find the server at www.scripterworld.com.
Peter Mortensen