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.