ファイルの例 Apache ログファイルがある場合
タイムスタンプなしでUnixログファイルから最も一般的なエラーメッセージを抽出する方法
重要なのは、最も一般的なエラーメッセージがリストの上部に表示されなければならないことです。
答え1
cat /tmp/file
:
ERROR 1 1234
ERROR 2 1234
ERROR 3 1234
ERROR 4 1234
ERROR 4 1234
ERROR 3 1234
ERROR 2 1234
ERROR 5 1234
ERROR 1 1234
ERROR 4 1234
ERROR 1 1234
ERROR 1 1234
ERROR 1 1234
ERROR 3 1234
ERROR 2 1234
ERROR 1 1234
ERROR 4 1234
ERROR 1 1234
ERROR 4 1234
ERROR 1 1234
ERROR 2 1234
grep "ERROR" /tmp/file | sort | uniq -c | sort -r
:
8 ERROR 1 1234
5 ERROR 4 1234
4 ERROR 2 1234
3 ERROR 3 1234
1 ERROR 5 1234
最初の列には、見つかった各文字列の発生数が表示されます。
grep "ERROR" /tmp/file\ # select only ERROR string
| sort\ # order
| uniq -c\ # count duplicate items
| sort -rn # reverse order and use numeric sort
最初の5つのエラーに追加できます。|head -n5
答え2
一意のエラーが発生するには、タイムスタンプを切り取る必要があると思います。
grep 'エラーメッセージ' /logfiles |cut-d' ' -f6- |sort-nr
答え3
すべてのsystem.logエラーを特定の順序で「並べ替える」ことに興味があるかもしれません。日付+時間また?
試み:(日付検索のみ)
grep -i "Jul 18" /var/log/*.log | sort | uniq -c | sort -n
試してみてください:(特定日付+時間探す)
grep -i "Jul 18 16:" /var/log/*.log | sort | uniq -c | sort -n
注:特定の日付については、まずcat * .logを実行してから、ヘッダーに表示される内容を見つけます。 OSによって異なる場合があります。上記の例はUNIX / MacOS用です。特定のオペレーティングシステムの「cat /var/log/system.log」ヘッダーの内容に基づいて、「Jul 18 16:」を「手動で」編集する必要があります。
役に立ったことを願っています!
:)