3.4 文本处理三剑客
3.4 Linux 文本处理三剑客:grep、sed、awk
grep:文本过滤与匹配
grep 用于根据字符串或正则表达式筛选文本内容,是日志分析和配置检查中最常用的工具之一。
常用选项
| 选项 | 说明 |
|---|---|
| -i | 忽略大小写 |
| -v | 反向匹配 |
| -n | 显示行号 |
| -c | 统计匹配数量 |
| -r | 递归搜索目录 |
| -l | 仅显示匹配文件 |
| -A N | 显示后 N 行 |
| -B N | 显示前 N 行 |
| -C N | 显示上下文 |
常见示例
匹配错误日志:
1 | |
忽略大小写搜索:
1 | |
过滤 SSH 配置中的有效内容:
1 | |
递归搜索目录:
1 | |
sed:流式文本编辑器
sed 适用于批量替换、删除、插入和自动化修改文件内容。
基本语法
1 | |
常用操作
文本替换
替换首个匹配:
1 | |
替换全部匹配:
1 | |
直接修改文件:
1 | |
修改前自动备份:
1 | |
删除内容
删除第 3 行:
1 | |
删除空行:
1 | |
删除匹配内容的行:
1 | |
插入与追加
在第 3 行前插入:
1 | |
在第 3 行后追加:
1 | |
awk:按列处理与数据统计
awk 以字段为单位处理文本,特别适合报表生成和数据统计。
常用内置变量
| 变量 | 含义 |
|---|---|
| $0 | 当前整行 |
| $1~$N | 第 N 列 |
| NR | 当前行号 |
| NF | 当前字段数 |
| FS | 字段分隔符 |
基础用法
输出第一列:
1 | |
指定分隔符:
1 | |
输出带格式内容:
1 | |
条件过滤
查找 root 用户:
1 | |
筛选 UID 大于等于 1000 的用户:
1 | |
数据统计
计算第一列总和:
1 | |
输出行号:
1 | |
统计访问量最高的 IP:
1 | |
grep、sed、awk 组合应用
实际运维中通常通过管道将三者组合使用。
统计错误日志类型
1 | |
批量修改 SSH 配置
1 | |
提取普通用户信息
1 | |
提取 IPv4 地址
1 | |
三者对比
| 工具 | 核心能力 | 典型场景 |
|---|---|---|
| grep | 过滤与匹配 | 日志检索、关键字查找 |
| sed | 批量编辑 | 配置修改、文本替换 |
| awk | 字段处理与统计 | 报表生成、数据分析 |
总结
Linux 文本处理的核心工具为 grep、sed、awk:
- grep:负责过滤和匹配文本
- sed:负责批量编辑文本
- awk:负责字段处理与统计分析
在实际运维工作中,三者结合管道使用能够高效完成日志分析、配置管理、批量处理和自动化脚本开发等任务,是 Linux 管理员和运维工程师必须掌握的基础技能。
3.4 文本处理三剑客
https://blog.sh462li.top/2026/05/28/Linux_learn/3.4 文本处理三剑客/