![將多尾過濾應用於透過通配符傳遞的多個文件](https://rvso.com/image/164737/%E5%B0%87%E5%A4%9A%E5%B0%BE%E9%81%8E%E6%BF%BE%E6%87%89%E7%94%A8%E6%96%BC%E9%80%8F%E9%81%8E%E9%80%9A%E9%85%8D%E7%AC%A6%E5%82%B3%E9%81%9E%E7%9A%84%E5%A4%9A%E5%80%8B%E6%96%87%E4%BB%B6.png)
multitail
有一個很好的基於正規表示式的過濾機制,在線上說明頁和線上手冊中進行了描述。兩個來源都表明可以使用開關從輸出中排除與給定正則表達式匹配的日誌行-ev
:
multitail -ev "ignorelinescontainingthis" /var/log/whatever.log -ev "alsoignorethis" /var/log/another.log
然而,這似乎不適用於過濾使用通配符傳遞的許多日誌檔案:
multitail -ev "thisdoesntwork" /var/log/myservice*.log
有辦法讓它發揮作用嗎?
出於分析目的,我嘗試了-ec
開關(突出顯示正則表達式匹配),結果發現過濾器僅應用於通配符列表中的第一個文件,但沒有應用於其他文件。
答案1
將我的評論變成答案。
的手冊頁multitail
此選項定義-e
如下:
-e
對以下內容使用下一個正規表示式文件。
因此正規表示式過濾器僅適用於緊接著的檔案。使用 shell glob 時,這將導致過濾器僅套用於擴充檔案清單中的第一個檔案。
若要在所有檔案中套用正規表示式篩選器,-E
必須使用下列選項:
-E
對以下內容使用下一個正規表示式文件。
此-v
選項否定指定的正規表示式,對於這些選項中的任何一個都應該以相同的方式運作。