当前位置:首页>Linux>Linux sed命令超详细教程:从入门到封神,全实战无废话

Linux sed命令超详细教程:从入门到封神,全实战无废话

  • 2026-09-12 18:08:08
Linux sed命令超详细教程:从入门到封神,全实战无废话
适配全平台
别再死记sed语法!这篇全实战教程,批量改文件/日志过滤/配置编辑,1行命令搞定
痛点暴击
  • 批量修改N个配置文件,手动打开改到崩溃,还容易漏改、改错
  • 排查日志时,想提取关键内容,手动翻找效率极低
  • sed命令符号多、语法怪,记不住、写错参数直接把源文件改崩,还没法撤回
  • 面试被问到sed实战题,只会基础替换,高阶用法一问三不知
核心价值承诺
  1. 零基础吃透sed核心逻辑,不用死记硬背语法
  2. 掌握替换、打印、删除、插入、正则等全场景命令
  3. 避开90%新手高频坑,再也不怕改坏源文件
  4. 附赠速查表+面试真题,工作、考试双适配
适配人群
Linux零基础小白、运维工程师、后端开发、测试工程师、校招/社招面试备考者

一、sed零基础前置:扫清认知障碍,小白不劝退
先搞懂sed的底层逻辑和基础规则,后续学命令事半功倍,全程大白话,无晦涩术语。
1. sed到底是什么?(通俗版解释)
sed全称Stream Editor(流编辑器),是一款非交互式文本处理工具——不用打开文件(比如vim、nano),就能批量对文本执行替换、删除、插入、查询等操作。
核心优势:批量处理效率极高、适合脚本自动化、占用资源少,服务器远程操作无压力。
2. sed核心执行逻辑(大白话拆解)
sed处理文本的流程固定,理解这4步,再也不怕记混语法:
逐行读取文本 → 匹配设定的规则 → 执行对应操作 → 输出结果(默认不修改源文件)
重点区分:
  • 模式空间:sed临时存放文本的区域,默认只输出处理结果,不改动源文件
  • 源文件修改:必须加-i参数,才会把处理结果写入源文件(高危操作,慎⽤)
3. sed基础语法格式(极简版,必记)
sed [选项参数] '匹配规则+操作动作' 目标文件名
常用选项参数(高频必背)
参数
功能说明
使用场景
-i
直接修改源文件内容(无撤回)
确认命令无误后,正式修改文件
-n
只打印匹配到的行,取消默认输出
日志查询、提取指定内容
-e
执行多个编辑动作,多命令叠加
批量执行多个操作
-r
启用扩展正则,省去转义符\
复杂文本匹配、分组处理
核心操作动作(高频必背)
动作符
功能说明
s
替换(使用率最高,占70%场景)
p
打印指定行/匹配行
d
删除指定行/匹配行
a
在指定行后追加内容
i
在指定行前插入内容
4. 新手必知小技巧(避坑第一步)
  • 测试命令:先不加-i参数,查看终端输出效果,没问题再加-i改源文件
  • 分隔符替换:默认用/分隔,遇到路径(含/)时,可换成#、|、@等符号,避免冲突
  • 快速查帮助:终端执行man sed,查看完整参数说明;按q退出帮助页面
  • Mac系统适配:Mac版sed需用-i ''(空引号),才能修改源文件

二、核心高频命令:按场景分类,学完直接用(干货主体)
本章按使用频率从高到低拆分,每个命令带格式+实战案例+代码注释+执行效果,全程可直接复制,贴合工作场景。
 测试文件准备:新建test.txt,用于后续所有命令演示,内容如下:
cat > test.txt << EOFHello LinuxHello SedLinux is powerfulSed isa good tooltest 123test 456EOF
模块1:最常用——替换操作(s命令,高频核心)
替换是sed最核心功能,默认只替换每行第一个匹配项,加g参数实现全局替换。
1. 单行替换(默认替换首个匹配项)
# 格式:sed 's/旧内容/新内容/' 文件名sed 's/Hello/Hi/' test.txt
执行效果:每行第一个Hello替换为Hi,源文件不变
2. 全局替换(整行所有匹配项)
# 格式:sed 's/旧内容/新内容/g' 文件名sed 's/Linux/centos/g' test.txt
执行效果:全文所有Linux替换为centos,g=global(全局)
3. 指定行/行范围替换
# 替换第2行的Sed为SEDsed'2s/Sed/SED/' test.txt# 替换第1-3行的Hello为Hised '1,3s/Hello/Hi/' test.txt
4. 特殊字符/路径替换(避坑重点)
遇到含/的路径,把分隔符换成#,避免语法报错
# 错误写法:sed 's//usr/local//opt/g' test.txt# 正确写法sed 's#/usr/local#/opt#g' test.txt
5. 批量执行多个替换(-e参数)
sed -e 's/Hello/Hi/g' -e 's/Linux/CentOS/g' test.txt
模块2:必备——打印/查询操作(p命令,日志排查神器)
配合-n参数使用,只打印目标内容,屏蔽默认输出,避免冗余信息。
1. 打印指定行/行范围
# 打印第2行sed -n '2p' test.txt# 打印第1-4行sed -n '1,4p' test.txt# 打印最后一行sed -n '$p' test.txt
2. 匹配关键词打印(含行号/不含行号)
# 打印含Sed的行sed -n '/Sed/p' test.txt# 打印含test的行,并显示行号sed -n '/test/=;/test/p' test.txt
3. 排除指定行打印
# 打印除第3行以外的所有行sed '3d' test.txt# 打印不含test的行sed '/test/d' test.txt
模块3:常用——删除操作(d命令,慎用!)
高危警示:删除操作不可逆,测试时绝对不加-i参数,确认效果后再执行!
1. 删除指定行/行范围
# 删除第2行sed'2d' test.txt# 删除第3-5行sed '3,5d' test.txt
2. 删除匹配关键词的行
# 删除含test的行sed '/test/d' test.txt
3. 删除空行(高频运维场景)
sed'/^$/d' test.txt
模块4:进阶——插入/追加/整行修改(配置文件专用)
适合编辑nginx、mysql等配置文件,批量添加注释、追加配置项。
1. 行前插入(i命令)+ 行后追加(a命令)
# 第2行前插入内容sed'2i# This is Sed tutorial' test.txt# 第3行后追加内容sed '3a# Linux command' test.txt# 匹配Sed的行后追加内容sed '/Sed/a# Stream Editor' test.txt
2. 整行替换(c命令)
# 把第2行整行替换为Hi Sed Commandsed'2c Hi Sed Command' test.txt
3. 行首/行尾添加内容
# 行首添加#(批量注释)sed 's/^/#/' test.txt# 行尾添加 ;sed 's/$/;/' test.txt
模块5:高阶——正则扩展+反向引用(高效处理复杂文本)
配合-r参数启用扩展正则,省去繁琐转义符,实现批量格式化文本。
1. 扩展正则基础用法
# 删除以test开头、数字结尾的行sed -r '/^test [0-9]+$/d' test.txt
2. 分组匹配+反向引用(面试高频)
用()分组,\1、\2调用分组内容,实现文本格式批量修改
# 把 test 123 改为 123 testsed -r 's/(test) ([0-9]+)/\2 \1/g' test.txt

三、实战场景合集:把命令串成工作流(直接照搬)
本章还原真实工作场景,所有命令可直接复制到服务器执行,解决日常痛点。
场景1:运维配置文件批量修改
# 1. 批量注释nginx配置文件(注释以listen开头的行)sed -i '/^listen/s/^/#/' nginx.conf# 2. 批量取消注释sed -i '/^#listen/s/^#//' nginx.conf# 3. 批量替换IP地址(192.168.1.100改为192.168.1.200)sed -i 's/192.168.1.100/192.168.1.200/g' config.ini
场景2:日志文件快速处理
# 1. 提取日志中ERROR级别的日志,保存到新文件sed -n '/ERROR/p' app.log > error.log# 2. 删除日志中30天前的冗余日志(删除含2024-02的行)sed -i '/2024-02/d' app.log# 3. 实时过滤日志(配合tail使用)tail -f app.log | sed '/DEBUG/d'
场景3:文本格式化+批量处理
# 1. 批量去除文件中的空格和制表符sed -i 's/[[:space:]]//g' test.txt# 2. 批量修改文件名后缀(.txt改为.md)ls *.txt | sed 's/\(.*\)\.txt/mv \1.txt \1.md/' | bash
场景4:Shell脚本自动化集成
# 自动化部署脚本片段,批量修改配置端口#!/bin/bashsed -i 's/port=8080/port=8090/g' /usr/local/app/config.iniecho"配置端口修改完成"

四、sed避坑指南:新手必看,少走90%弯路
1. 高危操作警示(致命坑)
  • -i参数无撤回:一旦执行sed -i修改源文件,无法恢复,务必先测试再执行
  • 删除操作别盲目:执行d命令前,先用p命令查看匹配行,确认无误再删
  • 别用sed修改二进制文件:sed只适用于文本文件,修改压缩包、图片会损坏文件
2. 语法常见报错及修复
报错提示
报错原因
修复方案
unterminated `s' command
分隔符缺失/冲突
检查/分隔符,换成#替代
invalid command code
动作符写错、引号嵌套错误
核对s/p/d/a/i动作符,用单引号包裹命令
Mac下-i参数报错
Mac版sed语法差异
改为sed -i '' '命令' 文件名
3. 易混点辨析
  • sed 'p' 与 sed -n 'p':前者会重复打印,后者只打印目标行
  • s/old/new/ 与 s/old/new/g:前者只替换首个匹配项,后者全局替换
  • 普通正则与扩展正则:加-r参数省去\转义符,写法更简洁

五、增值福利:速查表+面试真题(收藏备用)
sed高频命令速查表(精简版)
命令场景
命令模板
全局替换
sed 's/旧/新/g' file
打印匹配行
sed -n '/关键词/p' file
删除空行
sed '/^$/d' file
批量注释
sed 's/^/#/' file
行后追加
sed '行号a内容' file
效率工具推荐
  • sed在线测试工具:网页端模拟执行,避免改坏本地文件
  • Linux三剑客速查手册:sed+awk+grep一站式查询

六、核心总结
sed的核心逻辑就是“匹配规则+执行动作”,不用死记硬背复杂语法,记住高频场景的命令模板,工作中直接套用即可。新手牢记:先测试、后修改,慎用-i参数。

最新文章

随机文章