tail-f
を使用してログ ファイルを表示しようとしており、次の文字列を含むすべての行を除外したいと考えています。
"Nopaging the limit is"` and `"keyword to remove is"
次のように 1 つの文字列を除外できます。
tail -f admin.log|grep -v "Nopaging the limit is"
しかし、またはのいずれかを含む行を除外するにはどうすればよいですstring1
かstring2
。
これを入れてくださいfilename.txt
:
abc
def
ghi
jkl
文字列内のトークン間のパイプで -E オプションを使用する grep コマンド:
grep -Ev 'def|jkl' filename.txt
プリント:
abc
ghi
括弧で囲まれたトークン間のパイプで -v オプションを使用するコマンド:
egrep -v '(def|jkl)' filename.txt
プリント:
abc
ghi
grep -Fv -e 'Nopaging the limit is' -e 'keyword to remove is'
-F
(正規表現の代わりに) リテラル文字列による一致
-v
一致を反転します
-e
複数の検索パターンが可能 (すべてリテラルおよび反転)
別のオプションは、除外リストを作成することです。これは、除外するもののリストが長い場合に特に役立ちます。
vi /root/scripts/exclude_list.txt
除外したいものを追加します
Nopaging the limit is
keyword to remove is
ここで、grep を使用してファイル ログ ファイルから行を削除し、除外されていない情報を表示します。
grep -v -f /root/scripts/exclude_list.txt /var/log/admin.log
egrep -v "Nopaging the limit is|keyword to remove is"
tail -f admin.log|grep -v -E '(Nopaging the limit is|keyword to remove is)'
次のように通常の grep を使用できます。
tail -f admin.log | grep -v "Nopaging the limit is\|keyword to remove is"