Apakah mungkin untuk melakukan tail -f
(atau serupa) pada file, dan grep
pada saat yang sama? Saya tidak akan keberatan perintah lain hanya mencari perilaku semacam itu.
shell
command-line
grep
tail
xenoterracide
sumber
sumber
Ini akan bekerja dengan baik; lebih umum,
grep
akan menunggu ketika suatu program tidak menghasilkan, dan terus membaca saat keluaran masuk, jadi jika Anda melakukannya:Tidak ada yang akan terjadi selama 5 detik, kemudian grep akan menampilkan "test" yang cocok, dan kemudian lima detik kemudian akan keluar ketika proses pipa tidak
sumber
Tambahkan
--line-buffered
kegrep
, dan itu dapat mengurangi penundaan untuk Anda. Sangat berguna dalam beberapa kasus.sumber
grep
tidak pergi ke terminal (dialihkan ke jenis file lain). line buffering adalah default ketika output masuk ke terminal, sehingga tidak ada bedanya di sana. Perhatikan bahwa opsi itu spesifik untuk GNU.Anda bisa menyalurkan output
grep
ketail -f
. Ada juga program yang menggabungkantail -f
fungsionalitas dengan penyaringan dan pewarnaan, khususnya multitail ( contoh ).sumber
Saya melihat semua orang ini mengatakan untuk menggunakan
tail -f
, tetapi saya tidak suka batasan itu! Metode favorit saya mencari file sambil juga mencari baris baru (misalnya, saya biasanya bekerja dengan file log yang ditambahkan output diarahkan proses dieksekusi secara berkala melalui pekerjaan cron) adalah:Ini mengasumsikan GNU tail and grep. Rincian pendukung dari halaman belakang (GNU coreutils, mine is v8.22) [ https://www.gnu.org/software/coreutils/manual/coreutils.html] :
Jadi, bagian ekor dari perintah saya sama dengan
tail --follow --retry --lines=+0
, di mana argumen terakhir mengarahkannya untuk memulai di awal, melewatkan nol garis.sumber
Gunakan di atas, saya biasanya menggunakannya.
sumber
Anda dapat menggunakan netcat untuk menangkap hasil tail -f karena hasil baru masuk dengan mudah.
Ini mengatur grep untuk mendengarkan hasil input yang berasal dari port 1337.
Perintah kedua mem -pipe output dari tail -f ke netcat dan mengirimkannya ke localhost 1337. Untuk melakukannya secara lokal, Anda perlu mengganti ttys untuk masing-masing dari dua set perintah. , atau gunakan sesuatu seperti layar.
sumber
Berhasil. Tetapi berhati-hatilah bahwa output tidak lagi instan: ia mendapat buffer melalui pipa.
sumber
tail -f
di satu jendela, dantail -f logfile | grep pattern
di jendela lainnya. Baris yang mengandungpattern
tidak selalu muncul di kedua jendela secara bersamaan. Saya telah melihat garis muncul 30 detik terpisah pada kesempatan langka, yang menjengkelkan.tee
atau sesuatu.