在 CentOS 环境下分析 Golang 日志,是运维和开发中非常常见的需求。Golang 默认输出纯文本格式,结构清晰但缺少直接解析的工具。不过别担心,Linux 自带的经典文本处理命令——grep、awk、sed、cut——完全能够胜任,组合使用效率更高。下面直接上干货,几个典型场景及对应命令,你根据实际日志稍作调整即可。

1. 过滤关键字:用 grep 快速定位
最基础也最常用。例如,你想查看所有包含 “ERROR” 的日志行,一行命令就能搞定:
grep "ERROR" /path/to/your/logfile.log
它会直接输出包含 “ERROR” 的整行内容,简洁高效。
2. 按日期筛选:awk 精准提取
如果日志每行都带有时间戳,只想查看某一天的记录,使用 awk 处理非常方便:
awk '/2021-09-01/ {print}' /path/to/your/logfile.log
这会把 2021 年 9 月 1 日的所有日志行提取出来。日期格式可根据实际日志调整正则表达式。
3. 提取特定字段:sed 的正则魔法
假设日志行格式如下:
2021-09-01 12:34:56 INFO: User logged in: user1
想单独取出用户名“user1”?使用 sed 的正则替换即可:
sed 's/.*User logged in: \([^ ]*\).*/\1/' /path/to/your/logfile.log
关键在于捕获括号内的内容,然后替换为它。注意根据你的日志格式微调正则表达式,就能完美适配。
4. 按分隔符切分:cut 快速取字段
如果日志行是空格分隔的,比如上面那个例子,想提取前五个字段(日期、时间、级别、消息、用户名),用 cut 最直接:
cut -d ' ' -f 1,2,3,4,5 /path/to/your/logfile.log
指定分隔符为空格,然后列出需要保留的字段编号即可。
组合使用:应对复杂场景
实际排查问题时,往往需要多条件组合。例如,既要筛选关键字“ERROR”,又要限定在某个日期范围内。此时可以利用管道将命令串联起来:
grep "ERROR" /path/to/your/logfile.log | awk '/2021-09-01/ {print}'
先通过 grep 筛选出所有 ERROR 行,再通过 awk 进一步过滤日期。当然,你也可以调整顺序,或再加一层 sed 提取字段。灵活性很高,满足不同需求。
最后提醒一句:这些命令中的正则表达式和分隔符,务必根据实际日志的格式进行调整。比如日期格式是“2021-09-01”还是“01/Sep/2021”,字段之间是用空格还是制表符,这些细节决定了命令能否正确执行。建议先拿一小段日志测试,确认无误后再进行大规模处理。
