当前位置: 首页 > news >正文

十八、sed命令

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代表匹配的内容

 

http://www.rkmt.cn/news/52162.html

相关文章:

  • 2025 最新推荐!装盒机厂家权威榜单发布,覆盖多行业专用设备及创新解决方案内外盒 / 面膜 / 电子产品 / 玩具 / 日用品装盒机厂家推荐
  • 2025 年试验仪厂家最新推荐榜:乳化沥青 / 沥青混合料 / 高低温等全品类检测设备权威品牌排行榜马歇尔稳定度/沥青动力黏度/高低温试验仪公司推荐
  • 2025少儿免费编程体验课怎么选?5大优质机构推荐,家长收藏
  • 2025年11月复合型塑胶跑道厂家最新推荐,透气型塑胶跑道/自结纹塑胶跑道/老国标塑胶跑道/全塑型塑胶跑道/综合表现突出厂家推荐
  • 2025年11月国内旧房翻新公司权威排行:专业服务商综合实力大比拼
  • LLaMA-Factory 使用 Qwen2-1.5B-Instruct 在华为 Ascend NPU docker环境上进行模型微调
  • 是搬运他人的,来源于xt2025
  • 坯子插件 v3.2.5 for SketchUp 2022-2024下载地址与安装教程
  • 20232310 2025-2026-1 《网络与系统攻防技术》实验六实验报告
  • 2025 年尼龙扎带厂家最新推荐排行榜:不锈钢扎带、线卡、定位片等配件源头厂家权威测评推荐尼龙扎带厂家推荐
  • 2025年连续全自动玻璃钢缠绕生产线厂家权威推荐榜单:玻璃钢管缠绕机/管道缠绕机/ 玻璃钢管道连续全自动缠绕机源头厂家精选
  • 2025! jenkins 添加节点
  • 20251117noip模拟赛
  • Bootstrap在MySQL应用中有何优势
  • [Python刷题记录]-多数元素-技巧-简单
  • 算法可视化平台 - 让算法学习变得直观生动
  • 2025年智慧客房系统供应商口碑推荐榜单TOP10权威发布
  • 2025年苏州森系婚礼跟拍公司权威推荐:城市街拍婚纱照/海边婚纱照/教堂婚礼拍摄源头服务机构精选
  • 2025年11月洛阳品质好的伸缩门品牌
  • 2025年热缩膜重型设备包装生产厂家权威推荐榜单:热缩膜设备包装/热缩膜包装/ 精密设备热缩膜包装源头厂家精选
  • 筑牢“中国芯”安全底座:有度即时通支撑芯片设计高效协同
  • Linux服务器上安装配置GitLab
  • 2025口碑水乳品牌TOP5:抗初老/保湿/修护款任你挑,构象亮感水乳凭抗初老实力出圈
  • 拼多多关键字搜索接口逆向:从 WebSocket 实时推送解析到商品数据结构化重建
  • 2025留学机构哪家好机构排名
  • 2025出国留学机构怎么样
  • 本年度靠谱的运动场馆装修设计公司推荐
  • 2025 最新铣头厂家推荐!直角 / 双向 / 万向 / 万能 / 加工中心侧 / 加长 / CNC 侧 / BT50 侧 / 90 度铣头优质厂家品牌排行榜及选型指南
  • uni-app 无法实现全局 Toast?这个方法做到了!
  • 2025较好的留学机构排名前十