Kết hợp đuôi -f với grep?


26

Xin chào Tôi muốn tiếp tục xem một tệp nhật ký, nhưng tôi cũng không muốn thấy những thứ không liên quan, tôi chỉ quan tâm đến bất cứ điều gì có "foobar" trong đó.

Vì vậy, nếu tôi đang theo dõi các tập tin, tôi sẽ làm

 tail file | grep "foobar"

Bây giờ tôi đang thêm tùy chọn -f, có cách nào để chỉ hiển thị nội dung mà tôi muốn không? sử dụng grep hay kỹ thuật khác?


1
Có vẻ như câu trả lời của bạn đã được viết ở đây: stackoverflow.com/questions/5427483/
Kẻ

1
Có vẻ như câu trả lời xyr là trong câu hỏi.
JdeBP

Câu trả lời:


41

Bạn gần như đã viết câu trả lời, đó là:

tail -f file.log | grep "foobar"

Đó là nó.


1
Ái chà, bạn nói đúng, tôi nghĩ tôi không mong đợi nó hoạt động, tôi vẫn không, không phải là đường ống sẽ xảy ra khi một lệnh đã hoàn thành? Tôi đoán điều này cho thấy rằng nó không phải, nó xảy ra mỗi khi có đầu ra, phải không?
dùng893730

3
Không, nó sẽ khởi chạy song song hai chương trình và chương trình thứ hai (grep) sẽ thoát ngay khi STDOUT của đuôi đóng lại. Đó là toàn bộ vấn đề về đường ống, truyền dữ liệu :)
Ravachol

4
Khi greplà dòng cuối cùng trong đường ống, đầu ra của nó được đệm dòng, vì vậy bạn thấy đầu ra được lọc của tail -ftrực tiếp, thay vì bị trì hoãn. Lưu ý rằng nếu bạn sử dụng nhiều greplệnh, bất kỳ lệnh nào có đầu ra được dẫn sẽ cần một --line-bufferedtùy chọn (giả sử GNU hoặc BSD grep) để giữ hành vi này.
ghoti
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.