継続的に書き込まれているログ ファイルを tail したいのですが、さまざまな「共通」エントリを除外して、スローされたエラーなどだけが表示されるようにしたいと思います。grep -v "pattern" にパイプすることはできますが、理想的にはスキップするエントリを含むファイルを使用したいです。何かアイデアはありますか?
答え1
あなたが言ったように使うことができます。しかし、使うgrep -v "pattern"
代わりにpattern
`cat file_with_entires_to_skip`
バックティックを含めることを忘れないでください。コマンドは次のようになります。
tail -v FILE | grep -v "`cat FILE_WITH_ENTRIES_TO_SKIP`"
答え2
オプション-f
を使用すると、grep
パターンを 1 行に 1 つずつ含むファイルを指定できます。grep(1)
マニュアル ページを参照してください。
さらに、unbuffer
一部のシステムで使用可能なコマンドは、パイプラインで通常行われる出力バッファリングを無効にします。grep
フィルタを追加すると、パイプラインの出力が遅れる可能性があります。詳細については、マニュアル ページを参照してくださいunbuffer(1)
。
答え3
私の grep には、--exclude-from=FILE
ファイルから除外パターンを追加できるオプションが含まれています。私は次のものを持っています:
my-macbook-pro:Sun America ianchesal$ grep --version
grep (GNU grep) 2.5.1
つまり、次のようにすることができます:
tail -f <file> | grep --exclude-from=excludes.txt
答え4
次を試してください: grep -v -f EXCLUDE_FILENAME_LIST TARGET_FILENAME
EXCLUDE_FILENAME_LIST = 検索から grep で除外する単語のリスト TARGET_FILENAME = grep で除外するプライマリ ファイル