Shell——sed编辑器
一、sed编辑器
sed是一种流编辑器,流编辑器会在编辑器处理数据之前基于预先提供的一组规则来编辑数据流。
二、sed编辑器工作流程
1、读取:
sed从输入流 (文件、管道、标准输入) 中读取一行内容并存储到临时的缓冲区中(又称模式空间,pattern space)
2、执行:
默认情况下,所有的sed命令都在模式空间中顺序地执行,除非指定了行的地址,否则sed命令将会在所有的行上依次执行。
3、显示:
发送修改后的内容到输出流。在发送数据后,模式空间将会被清空。在所有的文件内容都被处理完成之前,上述过程将重复执行,直至所有内容被处理完
注意:
在所有的文件内容都被处理完成之前,上述过程将重复执行,直至所有内容被处理完。
默认情况下所有的sed命令都是在模式空间内执行的,因此输入的文件并不会发生任何变化,除非是用重定向存储输出。
三、命令格式
//1 sed -e '操作' 文件1 文件2 … //2 sed -n -e '操作' 文件1 文件2 … //3 sed -f 脚本文件 文件1 文件2 … //4 sed -i -e '操作' 文件1 文件2 … //5 sed -e '{ 操作1 操作2 … }' 文件1 文件2 …
四、常用选项
-e或- -expression:表示用指定命令来处理输入的文本文件,只有一个操作命令时可省略,一 般在执行多个操作命令使用
f或- -file:表示用指定的脚本文件来处理输入的文本文件
h或- -help:显示帮助
-n、- -quiet或silent:禁止sed编辑器输出,但可以与p命令一起使用完成输出
-i:直接修改目标文本文件

五、常用操作
- s:替换,替换指定字符
- d:删除,删除选定的行
- a:增加,在当前行下面增加一行指定内容
- i:插入,在选定行上面插入一行指定内容
- c:替换,将选定行替换为指定内容
- y:字符转换,转换前后的字符长度必须相同
- p:打印,如果同时指定行,表示打印指定行;如果不指定行,则表示打印所有内容;如果有非打印字符,则以ASCII码输出。其通常与“-n”选项一起使用
- =:打印行号
- l(小写的L):打印数据流中的文本和不可打印的ASCII字符(比如结束符$、制表符\t)
六、使用地址
sed编辑器有2种寻址方式:
以数字形式表示行区间
用文本模式来过滤出行
七、删除行
八、替换
1、格式
行范围 s/旧字符串/新字符串/替换标记
2、四种替换标记
数字:表明新字符串将替换第几处匹配的地方
g:表明新字符串讲会替换所有匹配的地方
p:打印与替换命令匹配的行,与-n一起使用
w 文件:将替换的结果写到文件中
九、插入
sed '/root/{H;d};$G' /etc/passwd //将包含root的行剪切到末尾,H表示复制到剪切板,G表示粘贴到指定行后 sed '1,2H;3,4G' /etc/passwd //将1,2行复制到3、4行下面
echo "111222333" | sed -r 's/(111)(222)/\2\1/' //将字符111和222互换位置 echo "111222333" | sed -r 's/^(.)(.*)(.)$/\3\2\1/' //将第一个字符和最后一个字符互换
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY