前面我们学完了文件操作、权限、用户、find/grep检索。
今天正式进入 Linux运维高阶必备技能:文本处理三剑客。
grep(检索)、sed(替换修改)、awk(截取统计)
掌握这三个,你就拥有了Linux处理文本、日志、数据的终极能力!
日常清洗日志、批量改配置、筛选字段、统计数据,全部靠它们。
一、今日学习目标
✅ 理解三剑客分工:grep筛选、sed改文件、awk取数据
✅ 掌握sed批量替换、删除、注释文件内容
✅ 掌握awk截取列、筛选日志、统计数据
✅ 熟练企业级日志过滤、批量改配置实战
✅ 告别手动修改文件,实现自动化文本处理
二、三剑客核心分工(一定要记死)
1. grep:擅长「搜索筛选」——过滤关键词
2. sed:擅长「批量编辑」——增删改内容、替换字符
3. awk:擅长「数据分析」——切片、取值、统计、格式化输出
昨天已经学完grep,今天主攻 sed & awk!
三、sed 命令:批量文件编辑神器
sed 是非交互式文本编辑工具,无需打开文件,直接批量修改内容,线上改配置神器。
1、sed 替换内容(最高频)
bash
# 格式:sed 's/旧内容/新内容/g' 文件名
sed 's/123/456/g' test.txt
s = 替换
g = 全局全部替换(不加g只替换每行第一个)
2、直接修改文件内容(真实写入)
bash
sed -i 's/root/admin/g' test.txt
-i 参数:直接保存修改到文件(生产使用最多)
3、批量注释内容
bash
# 将所有含test的行前面加#注释
sed -i '/test/s/^/#/g' test.txt
4、批量取消注释
bash
sed -i '/^#test/s/^#//g' test.txt
5、删除指定行
bash
# 删除空行
sed -i '/^$/d' test.txt
# 删除包含error的行
sed -i '/error/d' test.txt
四、awk 命令:日志数据分析之王
grep用来找行,awk用来取列!
所有结构化日志、端口、进程、表格数据,全部用awk截取。
1、默认空格切割,取第N列
bash
awk '{print $1}' test.txt # 取第一列
awk '{print $2,$4}' test.txt # 取第二、四列
2、查看端口只取端口号(实战高频)
bash
netstat -an | awk '{print $4}'
3、筛选带关键词的行并取值
bash
awk '/error/{print $0}' log.txt
4、指定分隔符截取(自定义符号)
bash
# 以冒号 : 切割,取第一列
awk -F: '{print $1}' /etc/passwd
5、统计行数、求和
bash
awk 'END{print NR}' test.txt # 统计文件总行数
五、三剑客组合实战(工作真实场景)
场景1:排查日志,只看报错、截取关键字段
bash
cat app.log | grep "ERROR" | awk '{print $1,$5,$10}'
场景2:批量替换配置文件端口
bash
sed -i 's/8080/8090/g' *.conf
场景3:清理日志空行和注释
bash
cat config.txt | grep -v "#" | grep -v "^$"
六、今日实操作业(必敲)
bash
# 1. 创建测试文件
touch day7.txt
echo "name:linux age:20 score:90" > day7.txt
# 2. sed全局替换内容
sed 's/90/100/g' day7.txt
# 3. 真实写入修改
sed -i 's/linux/LinuxStudy/g' day7.txt
# 4. awk截取指定列
awk -F: '{print $2}' day7.txt
# 5. 过滤空行
grep -v "^$" day7.txt
七、今日核心总结
1. grep:筛选行,过滤关键词
2. sed:批量增删改替换,生产改配置神器
3. awk:切片、取值、统计,结构化日志分析必备
4. 企业标准排查流程:grep过滤 → awk取值 → sed清洗
5. 熟练三剑客,是新手和专业运维的分水岭