GNU/Linux >> Belajar Linux >  >> Linux

Bagaimana cara 'menangkap' aliran berkelanjutan?

Saya pikir masalah Anda adalah grep menggunakan beberapa buffering keluaran. Coba

tail -f file | stdbuf -o0 grep my_pattern

itu akan menyetel mode buffering keluaran grep ke unbuffered.


Aktifkan grep mode penyangga baris saat menggunakan BSD grep (FreeBSD, Mac OS X dll.)

tail -f file | grep --line-buffered my_pattern

Sepertinya beberapa waktu yang lalu --line-buffered tidak masalah untuk GNU grep (digunakan di hampir semua Linux) karena di-flush secara default (YMMV untuk Unix-like lainnya seperti SmartOS, AIX atau QNX). Namun, per November 2020, --line-buffered diperlukan (setidaknya dengan GNU grep 3.5 di openSUSE, tetapi tampaknya secara umum diperlukan berdasarkan komentar di bawah).


Saya menggunakan tail -f <file> | grep <pattern> sepanjang waktu.

Ini akan menunggu sampai grep memerah, tidak sampai selesai (saya menggunakan Ubuntu).


Jika Anda ingin menemukan kecocokan di keseluruhan file (bukan hanya ekor), dan Anda ingin duduk dan menunggu kecocokan baru, ini bekerja dengan baik:

tail -c +0 -f <file> | grep --line-buffered <pattern>

-c +0 flag mengatakan bahwa output harus dimulai 0 byte (-c ) dari awal (+ ) dari file.


Linux
  1. Bagaimana saya bisa mencari pola multiline dalam sebuah file?

  2. Bagaimana cara memahami konten setelah pola?

  3. Cara grep \n dalam file

  1. Bagaimana Mengganti Nama File di Linux?

  2. Bagaimana cara saya grep secara rekursif?

  3. Bagaimana cara mendapatkan baris yang berisi string dalam file?

  1. Cara menekan hasil pencocokan file biner di grep

  2. Bagaimana cara memulihkan file yang dihapus di Linux?

  3. Cara grep bagian file di bash shell