本文将用通俗易懂 + 底层原理 + 实战示例 + 场景应用的方式,从零开始带你彻底掌握这三大核心命令:

  • grep:文本过滤王者

  • sed:流式编辑专家

  • awk:文本分析大师

无论你是小白入门,还是想进阶成为 Linux 运维高手,这篇文章都会帮你构建完整知识体系。建议收藏 + 反复实践。


一、Linux 文本处理核心思想

在 Linux 中:

一切皆文件
日志是文本
配置是文本
监控数据是文本

而 sed、awk、grep 就是处理文本的三把“手术刀”。

它们三者定位不同:

命令 核心能力 适合场景
grep 查找 过滤日志
sed 修改 批量替换
awk 分析 统计计算

二、grep —— 文本过滤王者

1️⃣ 工作原理

grep 的核心机制:

读取文件 → 按行扫描 → 匹配正则 → 输出符合行

本质就是“模式匹配引擎”。


2️⃣ 基础用法

grep "error" logfile.log

查找包含 error 的行。


3️⃣ 常用参数详解

参数 作用
-i 忽略大小写
-v 取反
-n 显示行号
-r 递归查找
-E 使用扩展正则

示例:

grep -in "failed" /var/log/messages

4️⃣ 正则表达式核心

表达式 含义
^ 行首
$ 行尾
. 任意字符
* 0次或多次
[] 字符集合

示例:

grep "^root" /etc/passwd

查找以 root 开头的行。


5️⃣ 实战场景

🔥 查找80端口进程

netstat -ntlp | grep 80

🔥 统计日志报错次数

grep -c "ERROR" app.log

三、sed —— 流编辑专家

1️⃣ 工作原理

sed 是 Stream Editor(流编辑器)。

工作流程:

读取一行 → 放入模式空间 → 执行命令 → 输出 → 读取下一行

特点:

  • 不加载全部文件

  • 按行处理

  • 内存占用极低


2️⃣ 核心语法结构

sed [选项] '命令' 文件

3️⃣ 最核心命令:替换

sed 's/旧内容/新内容/' 文件

示例:

sed 's/root/admin/' passwd.txt

只替换每行第一个。

全局替换:

sed 's/root/admin/g' passwd.txt

4️⃣ 行操作

删除第2行:

sed '2d' file.txt

删除第2到5行:

sed '2,5d' file.txt

只打印第3行:

sed -n '3p' file.txt

5️⃣ 实战应用

🔥 批量修改IP

sed -i 's/192.168.1.10/10.0.0.1/g' config.conf

🔥 删除空行

sed '/^$/d' file.txt

四、awk —— 文本分析大师

1️⃣ 工作原理

awk 本质是“文本处理编程语言”。

核心思想:

按行读取 → 按列分割 → 条件匹配 → 执行动作

默认分隔符是空格。


2️⃣ 核心结构

awk '条件 {动作}' 文件

3️⃣ 内置变量

变量 含义
$0 整行
$1 第一列
$2 第二列
NF 列数
NR 行号

4️⃣ 基础示例

打印第一列:

awk '{print $1}' file.txt

打印第1和第3列:

awk '{print $1,$3}' file.txt

5️⃣ 条件判断

打印端口为 80 的行:

awk '$3==80 {print $0}' file.txt

6️⃣ 统计计算

统计CPU使用率平均值:

awk '{sum+=$2} END {print sum/NR}' cpu.txt

7️⃣ 实战案例

🔥 统计每个IP访问次数

awk '{print $1}' access.log | sort | uniq -c | sort -nr

五、三剑客对比总结

功能 grep sed awk
查找 ⭐⭐⭐⭐
替换 ⭐⭐⭐⭐
分析 ⭐⭐⭐⭐
复杂逻辑 ⭐⭐⭐⭐

六、高手进阶:三剑客组合拳

Linux 精髓在于“管道思想”。

示例:

cat access.log | grep "404" | awk '{print $1}' | sort | uniq -c | sort -nr

解释:

  1. 过滤404

  2. 取IP

  3. 排序

  4. 统计

  5. 倒序排列

这就是运维日常数据分析流程。


七、底层理论提升(面试必问)

Q1:为什么 sed 比 awk 快?

答:

  • sed 是纯流编辑

  • awk 是解释执行脚本

  • awk 功能更强但开销更大


Q2:grep 和 egrep 区别?

  • egrep 等同于 grep -E

  • 支持扩展正则


Q3:为什么 awk 默认空格分割?

因为其设计目标是处理结构化文本(类似表格)。


八、运维实战场景合集

✅ 日志分析
✅ 批量修改配置
✅ 数据提取
✅ 统计分析
✅ 自动化脚本

这三剑客,构成 Linux 文本处理的核心体系。


九、学习建议

  1. 每天练习 5 个日志案例

  2. 多用 man 查看参数

  3. 学会正则表达式

  4. 熟悉管道组合


总结

grep 是筛子
sed 是剪刀
awk 是计算器

如果你掌握了这三把武器,你在 Linux 世界里基本可以横着走。

Logo

汇聚全球AI编程工具,助力开发者即刻编程。