Linux
如何通過分頁 grep 連續流
我將此發布給超級使用者但沒有人接受:https ://superuser.com/questions/832578/how-to-grep-a-continuous-stream-with-paging
我想獲取一個日誌文件並過濾掉一些不相關的日誌條目,例如 INFO 級別的日誌條目。上面的 Stack Overflow 答案讓我有所收穫:
$ tail -f php_error_log | grep -v INFO
我想要的下一個部分是在這個流中進行分頁,比如少。less +F 適用於連續流,但我不能將其應用於 grep。我怎樣才能做到這一點?
自從發布該問題以來,我一直在研究它並發現它
less
正在等待 EOF 出現,並掛起直到它收到它(source)。這解釋了為什麼嘗試跟隨管道不起作用。我粗魯地編寫了一個簡短的腳本來做我想做的事:#!/bin/bash tail -f /data/tmp/test.txt | grep --line-buffered foo > /data/tmp/foo & pid=$! echo $pid sleep 1 less +F /data/tmp/foo kill $pid rm /data/tmp/foo
我相信可以更優雅地執行此操作,也許可以使用無需直接互動即可自動清理的臨時文件。
這個怎麼樣:
grep -V INFO php_error_log | less +F
或者,您可以執行
multitail php_error_log
,然後在 multitail 啟動後,按e
並按照提示添加要過濾的正則表達式。對於隨時間持續監控一個或多個日誌文件,multitail 是一個很好的解決方案。