2016-06-24 11 views
0

1つの必須単語、例えば "Jan 10"と一致する行全体をgrepする必要があります。 "Crit"、 "Warn"1つの必須単語を含み、オプションの単語の1つを持つ行をegrepする方法

等価C式は次のようになります。もし(はstrstr(BUF、 "1月10日")& &(はstrstr(BUF、 "クリティカル")||はstrstr(BUF)) "警告")

注ほとんどこれに近いが、まだ私を助けていないいくつかの答えを試してみました。私のログファイルには、さまざまなレベルのCrit、Warn、Info、Debgが含まれます。しかし、私は致命的または警告のみが欲しいが、日付は1月10日でなければならない。

答えて

1

論理演算を直接サポートしていない正規表現では、grepは最良の選択ではないと思います。そして私はawkをこれらのものに使用することを好みます。これはプログラミング言語でも正規表現用のcmdツールでもあります。 GNUのgrepので

awk '/Jan 10/ && (/Crit/ || /Warn/)' your_text_file 
+0

awkは私が考えて論理演算を行うことで素晴らしいです。 grep以上にこれは単純化しているようです。 – BaskarA

+0

ニース!同様にgrepを使って行うこともできます:[link](https://regex101.com/r/lN6hK4/2) – Oren

1

grep "Jan 10" egrep "Crit | Warn"

これは役に立ちます。

1

grep 'Jan 10' file | grep -e 'Crit' -e 'Warn' 
関連する問題