2017-09-15 7 views
-2

昨日発生したすべての例外行を含む例外ファイルexception.txtがあります。ログファイルからログをフィルタする方法

例:

Null pointer exception 
Socket exception 
Network exception 
End of file exception. 

私はまた、それらの線をフィルタリングすることにより、私はシェルスクリプトでnewexception.txtファイルを作成したいと思います

End of file exception 
Null pointer exception 

のようないくつかの例外のキーワードが含まれているフィルタファイルfilter.txtを、持っていますfilter.txtに記載されています。 filter.txtの行を無視して、基本的にexception.txtのコピーである必要があります。

これを行うにはどうすればよいでしょうか?

答えて

0

あなたのフィルタファイルからすべての行を読んで、それから、正規表現を形成することができます。これは、|で改行を置換することによって、単一の文字列にフィルタラインを平らので、あなたのだろう

lines=`cat filter.txt` 
regex=${lines//$'\n'/|} 
egrep -v "$regex" exception.txt 

を正規表現はEnd of file exception|Null pointer exceptionのようになります。このようにして、so* exceptionなどの正規表現を単独で作成するフィルタキーワードを使用することもできます。 これにはbashが必要です。

+0

これは機能しません。 filter.txtとexception.txtのフルパスを与えても出力が表示されない – chandan

+0

@chandan bashシェルに入力するか、スクリプトの場合は '#!/ usr/bin/bash'行を追加する必要があります。 – yacc

+0

私はそれをしましたが、まだ出力を出すようには働いていません。 – chandan

1

filter.txtにあるキーワードを知っている場合は、最も簡単で多分最も速い方法は、-vオプションを使ってgrepです。

grep -v -e 'keyword1' -e 'keyword2' exception.txt 
関連する問題