Alternatif 'kepala' yang tidak keluar?

13

Saya membutuhkan utilitas yang akan mencetak n baris pertama, tetapi kemudian terus berjalan, menyedot sisa baris, tetapi tidak mencetaknya. Saya menggunakannya untuk tidak membanjiri terminal dengan output dari suatu proses yang perlu terus berjalan (itu menulis hasil ke file).

Saya pikir saya bisa melakukannya process | {head -n 100; cat > /dev/null}, tetapi adakah yang lebih elegan?

IttayD
sumber
2
Proses akan berlanjut setelah head, tidak akan mencetak lagi ke terminal.
123
7
Masalah apa yang sebenarnya ingin Anda pecahkan?
Satō Katsura
2
Apa maksudmu menghisap mereka? Jika Anda hanya pipa ke kepala, maka output yang tersisa akan diberhentikan.
Julie Pelletier
7
@JuliePelletier dan stdout akan ditutup dan program yang ditulis dengan baik (yang hanya menulis ke stdout, bagaimanapun) akan memperhatikan itu dan berakhir lebih awal.
cas
@castrap '' PIPE
Satō Katsura

Jawaban:

22

Untuk melanjutkan "menyedot" output dari processsaat hanya mencetak 100 baris pertama (atau apa pun):

process | awk 'NR<=100'

Atau:

process | sed -n '1,100p'
John1024
sumber
13
Saya biasanya hanya menggunakan... | tee /dev/null | head ...
David Schwartz
2
@ DavidSchwartz ya - itu yang akan saya lakukan. Jauh lebih disukai, karena Anda juga dapat membuang semua output dalam file dan memeriksanya di lain waktu. Anda tidak pernah tahu kapan itu akan dibutuhkan - lebih buruk lagi, Anda memiliki file di mana Anda kadang-kadang menimpa, paling baik, Anda dapat menggunakannya sebagai log untuk menganalisis apa / mengapa terjadi.
VLAZ