常见日志解析命令及其使用场景。制图bytebytego
图中列出了前六个常用的日志解析命令。
GREP、CUT、SED、AWK、SORT、UNIQ
让我们通过一个示例来演示。
要计算请求路径 "/api/payments" 的前 10 个 IP 地址在访问日志中出现的次数,日志格式如下:
216.67.1.91 - leon [01/Jul/2002:12:11:52 +0000] "GET /index.html HTTP/1.1" 200 431
我们可以使用 grep、cut、sort 和 uniq 命令的组合。以下是一个示例命令:
grep '/api/payments' access.log | cut -d ' ' -f 1 | sort | uniq -c | sort -rn | head -10
每个命令部分的作用如下:
grep '/api/payments' access.log:从 access.log 文件中筛选出包含 "/api/payments" 的行。
cut -d ' ' -f 1:提取每行的第一个字段(即 IP 地址)。-d ' ' 选项指定空格为字段分隔符。
sort:对 IP 地址进行排序。
uniq -c:移除重复行,并在行前加上出现的次数。
sort -rn:按数值倒序(次数最高的在前)排序行。
head -10:仅显示输出的前 10 行,即对应的前 10 个 IP 地址。