Kombinasikan tail -f dengan grep?

26

Hai Saya ingin terus melihat file log, tapi saya juga tidak ingin melihat hal-hal yang tidak relevan, saya hanya tertarik pada apa pun dengan "foobar" di dalamnya.

Jadi jika saya mengekor file saya akan lakukan

 tail file | grep "foobar"

Sekarang saya menambahkan opsi -f, adakah cara untuk hanya menunjukkan hal-hal yang saya inginkan? menggunakan teknik grep atau lainnya?

pengguna893730
sumber
1
Tampaknya jawaban Anda sudah ditulis di sini: stackoverflow.com/questions/5427483/…
uSlackr
1
Tampaknya jawaban xyr ada dalam pertanyaan.
JdeBP

Jawaban:

41

Anda hampir menulis jawabannya, yaitu:

tail -f file.log | grep "foobar"

Itu dia.

Ravachol
sumber
1
Woah, Anda benar, saya pikir saya tidak berharap ini bekerja, saya masih tidak, bukankah perpipaan seharusnya terjadi ketika sebuah perintah telah selesai dieksekusi? Saya kira ini menunjukkan bahwa itu bukan, itu terjadi setiap kali ada output, kan?
user893730
3
Tidak itu akan meluncurkan dua program secara paralel, dan yang kedua (grep) akan keluar segera setelah STDOUT ekor ditutup. Itulah inti dari pipa, streaming data :)
Ravachol
4
Kapan grepbaris terakhir dalam pipa, outputnya adalah buffered line, sehingga Anda melihat output yang disaring tail -flangsung, bukan ditunda. Perhatikan bahwa jika Anda menggunakan banyak grepperintah, output apa pun yang disalurkan akan memerlukan --line-bufferedopsi (dengan asumsi GNU atau BSD grep) untuk menjaga perilaku ini.
ghoti