如何在 unix 日志文件中 grep 最常见的错误消息

Jay*_*iam 9 linux shell grep webserver

如果我有一个文件示例 apache 日志文件

如何在没有时间戳的 unix 日志文件中提取最常见的错误消息

关键是最常见的错误消息应该出现在列表的顶部

小智 11

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
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)

第一列显示找到的每个字符串出现的次数说明:

grep "ERROR" /tmp/file\ # select only ERROR string
| sort\ # order
| uniq -c\ #  count duplicate items
| sort -rn # reverse order and use numeric sort
Run Code Online (Sandbox Code Playgroud)

对于前 5 个错误,您可以添加 |head -n5