Linux特定の日付とタイムスタンプに基づいて、特定の単語が表示されるテキストファイルの行数を計算します。

Linux特定の日付とタイムスタンプに基づいて、特定の単語が表示されるテキストファイルの行数を計算します。

特定の日付と時刻に基づいて -> [com.java.Name abc] <-という単語を含むテキストファイルの行数を計算する方法

以下で試しましたが、値は1のみ表示されます。 4行を予想します。単語数ではなく、行数に基づいてください。日付と時刻をどのように言及しますか?

grep -c '[com.java.Name abc]' server.log | wc -l

以下はサンプルファイルです

2020-06-14 13:46:10,442 INFO  [com.java.Name abc] [com.java.Name abc]
2020-06-14 13:46:20,420 INFO  [com.java.Name abc]
2020-06-14 13:47:14,410 INFO  [com.java.Name abc]
2020-06-14 13:48:12,442 INFO  [com.java.Name abc]

答え1

grep-cオプションはすでに計算されています。結果grepは数値です。そうすれば、wc当然1行しか検索されません。ただ完全に削除してくださいwc

答え2

[アプローチの問題は、とを含むパターンを探していることです]。これは正規表現で特別な意味を持ちます。つまり、「文字リスト」であり、その中に含まれるすべての文字と一致するということです。だからやってください

grep '[com.java.Name abc]' logfile

行内の位置に関係なく、文字、、、、、、、、、、スペース、aピリオドを含むすべての行と一致します(ログファイル内のすべての行と一致します)。bcejmovN.

脱出[して]好きなはず

grep -c '\[com.java.Name abc\]' logfile

または@terdonが指摘したように、この-Fフラグを使用してください。

grep -c -F '[com.java.Name abc]' logfile

特定の日に発生したイベントを見つけるには、特定のメカニズムによって異なります。あなたがその日を知っていれば、次2020-06-14のように簡単に話すことができます。

grep -c '^2020-06-14.*\[com.java.Name abc\]' logfile

完全なタイムスタンプに基づいて検索したい場合は、知っている場合にのみ精密以下のようにフォーマットされたログファイルの瞬間

grep -c '^2020-06-14 13:48:12,442.*\[com.java.Name abc\]' logfile

最初に発生回数を計算する必要がないため、これは少ない可能性があります。この場合、以下の答えのいくつかを適用してみることができます。

関連情報