尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

十八、sed命令

十八、sed命令
📅 发布时间:2026/6/20 3:43:38

1、sed 流编辑器

根据事先设计好的一组规则编辑数据流。

sed编辑器根据命令来处理数据流中的数据,这些命令要么从命令行中输入,要么存储在一个命令文本文件中。

sed编辑器会执行下列操作。

  1. 一次从输入中读取一行数据。
  2. 根据所提供的编辑器命令匹配数据。
  3. 按照命令修改流中的数据。
  4. 将新的数据输出到STDOUT 。

在流编辑器将所有命令与一行数据匹配完毕后,它会读取下一行数据并重复这个过程。在流编辑器处理完流中的所有数据行后,它就会终止。

由于命令是按顺序逐行给出的,sed编辑器只需对数据流进行一遍处理就可以完成编辑操作。这使得sed编辑器要比交互式编辑器快得多,你可以快速完成对数据的自动修改。

sed 命令行格式为:

sed [选项] ‘command’ 输入文本名
常用选项
选项      说明
-n       使用安静模式,在一般情况所有的 STDIN 都会输出到屏幕上,加入-n 后只打印被 sed 特殊处理的行
-e       指定多个命令,命令之间用分号 ; 隔开,在命令末尾和分号之间没有空格。
-f       指定一个 sed 脚本文件到命令行执行,
-r       Sed 使用扩展正则
-i       直接修改文档读取的内容,不在屏幕上输出(修改原文件)
-i.bak   修改文档读取的内容,同时创建 .bak的备份文件(先备份原文件内容,再修改原文件)
!       取反 // sed 操作命令告诉 sed 如何处理由地址指定的各输入行。如果没有指定地址,sed 就会处理输入的所有的行。
命令     说明
a\          在当前行后添加一行或多行
c\          用新文本修改(替换)当前行中的文本
d           删除行
i\          在当前行之前插入文本
h           把模式空间里的内容复制到暂存缓存区
H           把模式空间里的内容追加到暂存缓存区
g           取出暂存缓冲区里的内容,将其复制到模式空间,覆盖该处原有内容
G           取出暂存缓冲区里的内容,将其复制到模式空间,追加在原有内容后面
l            列出非打印字符
p           打印行
n           读入下一输入行,并从下一条命令而不是第一条命令开始处理
q          结束或退出 sed
r           从文件中读取输入行
!         对所选行意外的所有行应用命令
s           用一个字符串替换另一个

sed命令用于修改文件内容

sed是行编辑器,使用者只能在命令行输入编辑命令、指定文件名,然后在屏幕上查看输出。

sed 编辑器没有破坏性,它不会修改文件,除非使用 shell 重定向来保存输出结果。默认情况下,所有的输出行都被打印到屏幕上。

sed 编辑器逐行处理文件(或输入),并将输出结果发送到屏幕。

sed 把当前正在处理的行保存在一个临时缓存区中,这个缓存区称为模式空间或临时缓冲。sed 处理完模式空间中的行后(即在该行上执行 sed 命令后),就把改行发送到屏幕上(除非之前有命令删除这一行或取消打印操作)。

sed 处理完输入文件的最后一行后,sed 便结束运行。sed 把每一行都存在临时缓存区中,对这个副本进行编辑,所以不会修改或破坏源文件。

sed 定位特定的行来处理,指定要处理的行

1、数字定址

sed –n ‘4s/hello/A/’ message
// 说明:将第4行中hello字符串替换为A,其它行如果有hello也不会被替换。sed –n ‘2,4s/hello/A/’ message
// 说明:将第2-4行中hello字符串替换为A,其它行如果有hello也不会被替换。sed –n ‘2,+4s/hello/A/’ message
// 说明:从第2行开始,再接着往下数4行,也就是2-6行,这些行会把hello字符替换为A。sed –n ‘4,~3s/hello/A/’ message
// 说明:第4行开始,到第6行。解释6的由来,"4,~3"表示从4行开始到下一个3的倍数,这里从4开始算,那就是6了,因为是要求3的第一个超过前边数字4的倍数。sed –n ‘4~3s/hello/A/’ message
// 说明:从第4行开始,每隔3行就把hello替换为A。比如从4行开始,7行,10行等依次+3行。sed –n ‘$s/hello/A/’ message
// 说明:$符号表示最后一行,和正则中的$符号类似,但是第1行不用^表示,直接1就行了。sed -n ‘1!s/hello/A/’ message
// 说明:!符号表示取反,该命令是将除了第1行,其它行hello替换为A,上述定址方式也可以使用!符号。

2、正则定址

^          // 匹配行开始,如:/^sed/匹配所有以sed开头的行。
$          // 匹配行结束,如:/sed$/匹配所有以sed结尾的行。
.          // 匹配一个非换行符的任意字符,如:/s.d/匹配s后接一个任意字符,最后是d。
*          // 匹配0个或多个字符,如:/*sed/匹配所有模板是一个或多个空格后紧跟sed的行。
[]         //匹配一个指定范围内的字符,如/[sS]ed/匹配sed和Sedsed元字符集本文档使用 书栈网 · BookStack.CN 构建
[^]        // 匹配一个不在指定范围内的字符,如:/[^A-RT-Z]ed/匹配不包含A-R和T-Z的一个跟ed的行。
\(..\)     // 匹配子串,保存匹配的字符,如s/\(love\)able/\1rs,loveable被替换成l
&          //保存搜索字符用来替换其他字符,如s/love/ **&** /,love这成 **love** 。
\<         //匹配单词的开始,如:/\<love/匹配包含以love开头的单词的行。
\>         // 匹配单词的结束,如/love\>/匹配包含以love结尾的单词的行。
x\{m\}     //重复字符x,m次,如:/0\{5\}/匹配包含5个0的行。
x\{m,\}    //重复字符x,至少m次,如:/0\{5,\}/匹配至少有5个0的行。
x\{m,n\}   //重复字符x,至少m次,不多于n次,如:/0\{5,10\}/匹配5~10个0的行sed 功能强大的流式文本编

 ^$   ^表示行头(行首,第一个字符之前)表示行尾(一行最后一个字符之后)^$合在一起,表示空行!!

sed '/123\|abc/!d' 1.txt          // 删除不匹配123或abc的行,/123\|abc/ 表示匹配123或abc ,\是转义符,!表示取反
sed '1,3{/123/d}' 1.txt           // 删除1~3行中,匹配内容123的行,1,3表示匹配1~3行,{/123/d}表示删除匹配123的行
sed 's/123/hello/' 1.txt          // 将文件中的123替换为hello,默认只替换每行第一个123
sed 's/123/hello/g' 1.txt         // 将文本中所有的123都替换为hello
sed 's/123/hello/2' 1.txt         // 将每行中第二个匹配的123替换为hello
sed '/#/s/,.*//g' 1.txt           // 匹配有#号的行,替换匹配行中逗号后的所有内容为空 (,.*)表示逗号后的所又内容
sed 's/..$//g' 1.txt              // 替换每行中的最后两个字符为空,每个点代表一个字符,$表示匹配末尾 (..$)表示匹配最后两个字符
sed 's/^#.*//' 1.txt              // 将1.txt文件中以#开头的行替换为空行,即注释的行 ( ^#)表示匹配以#开头,(.*)代表所有内容
sed 's/^#.*//;/^$/d' 1.txt        // 先替换1.txt文件中所有注释的空行为空行,然后删除空行,替换和删除操作中间用分号隔开
sed 's/^[0-9]/(&)/' 1.txt         // 将每一行中行首的数字加上一个小括号 (^[0-9])表示行首是数字,&符号代表匹配的内容
sed 's/\(^[0-9]\)/(\1)/' 1.txt    // 替换左侧特殊字符需要转义,右侧不需要转义,\1代表匹配的内容

 

相关新闻

  • 2025 最新推荐!装盒机厂家权威榜单发布,覆盖多行业专用设备及创新解决方案内外盒 / 面膜 / 电子产品 / 玩具 / 日用品装盒机厂家推荐
  • 2025 年试验仪厂家最新推荐榜:乳化沥青 / 沥青混合料 / 高低温等全品类检测设备权威品牌排行榜马歇尔稳定度/沥青动力黏度/高低温试验仪公司推荐
  • 2025少儿免费编程体验课怎么选?5大优质机构推荐,家长收藏

最新新闻

  • 2026银川2026正规漏水检测维修公司精选口碑榜TOP5权威推荐-精准定位检测漏水点-专业防水补漏堵漏维修、卫生间/厨房/屋顶/天沟/地下室/阳台防水漏水检测维修 - 安佳防水
  • 字节跳动拟购5万颗AI芯片,国产GPU竞争聚焦生态、成本与产能
  • 基于深度学习的糖尿病视网膜病变自动检测系统构建实战
  • Obsidian MCL布局:模块化CSS让你的笔记排版焕然一新
  • 逆向工程实战:从加密音乐文件到通用音频格式的转换原理
  • NGA论坛优化摸鱼体验:免费开源脚本让你的论坛浏览效率提升300%

日新闻

  • 信任的进化:技术实现详解——如何用JavaScript构建博弈论模拟器
  • Terrakube自定义工作流:如何集成OPA、Infracost等工具扩展IaC能力
  • grunt-concurrent快速入门:5分钟学会并行运行Grunt任务

周新闻

  • 3步解锁iOS设备:applera1n激活锁绕过完全指南
  • 39 2026 人工智能证书终极盘点,普通人选 AI 证书可以从这些方向入手
  • Redis 暴露公网有多危险?从端口检查到补救步骤

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号