![ワイルドカード経由で渡された多数のファイルにマルチテールのフィルタリングを適用する](https://rvso.com/image/164737/%E3%83%AF%E3%82%A4%E3%83%AB%E3%83%89%E3%82%AB%E3%83%BC%E3%83%89%E7%B5%8C%E7%94%B1%E3%81%A7%E6%B8%A1%E3%81%95%E3%82%8C%E3%81%9F%E5%A4%9A%E6%95%B0%E3%81%AE%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%81%AB%E3%83%9E%E3%83%AB%E3%83%81%E3%83%86%E3%83%BC%E3%83%AB%E3%81%AE%E3%83%95%E3%82%A3%E3%83%AB%E3%82%BF%E3%83%AA%E3%83%B3%E3%82%B0%E3%82%92%E9%81%A9%E7%94%A8%E3%81%99%E3%82%8B.png)
multitail
には、man ページとオンライン マニュアルに記載されている、正規表現ベースの優れたフィルタリング メカニズムがあります。両方のソースでは、スイッチを使用して、特定の正規表現に一致するログ行を出力から除外できると述べています-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
次の正規表現を次に使用しますファイル。
したがって、正規表現フィルターは直後のファイルにのみ適用されます。シェル グロブを使用する場合、フィルターは拡張されたファイル リストの最初のファイルにのみ適用されます。
すべてのファイルに正規表現フィルターを適用するには、-E
代わりにオプションを使用する必要があります。
-E
次の正規表現を次に使用しますファイル。
指定された正規表現を否定するオプション-v
は、どちらのオプションに対しても同じように動作するはずです。