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>

Jawaban:


59

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

tail --lines=+100 <file>

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'

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.


2

Anda dapat menggunakan parameter NR dengan perintah awk :

cat <file> | awk '{if (NR>=7000) print}'

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

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
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.