Linux 文本三剑客实战:grep、awk 与 sed
【摘要】 本文通过真实运维场景,详解 Linux 文本处理三剑客 grep、awk、sed 的核心用法与实战技巧,帮助开发者高效过滤与清洗日志。
前言
在日常运维与后端开发中,日志分析和文本处理是基本功。Linux 平台上的“文本三剑客”——grep、awk 和 sed,如果能组合使用,往往能以极简的命令解决复杂的文本清洗问题。本文将结合实际场景,演示它们的核心用法。
1. grep:精准文本过滤
grep 擅长按行查找包含指定模式的文本。配合正则表达式和上下文参数,能够快速定位错误日志。
# 在 app.log 中查找包含 ERROR 关键字的行,并显示前后各 2 行上下文
grep -n -C 2 "ERROR" /var/log/app.log
实战技巧:使用 -E 参数启用扩展正则,或者直接用 egrep 同时匹配多个条件:
egrep "ERROR|WARN" /var/log/app.log
2. awk:高效字段解析
awk 是一个强大的文本分析工具,默认以空格或制表符切分字段。常用于统计、求和或提取特定列。
# 统计访问日志中各个 IP 的访问次数,并按降序排列
awk '{print $1}' access.log | sort | uniq -c | sort -nr
上述命令中,$1 代表每行的第一个字段(通常为客户端 IP),uniq -c 用于统计连续重复行的数量。
3. sed:流式文本替换
sed 是一种非交互式流编辑器,常用于批量修改配置文件或文本替换。
# 将配置文件中的旧服务地址安全替换为新地址(-i 表示直接修改文件)
sed -i 's/127.0.0.1:8080/10.0.0.5:9000/g' /etc/app.conf
4. 三剑客管道联动
在华为云 ECS 运维中,我们常将三者串联。例如:找出日志中状态码为 500 的请求路径并去重:
grep "HTTP/1.1\" 500" access.log | awk '{print $7}' | sort -u
结语
熟练掌握这三个工具不仅能大幅提升排障效率,还能在没有图形界面的服务器上游刃有余。建议将高频命令整理成个人的运维脚本库,日常多加练习。
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)