Linux三剑客之SED
SED是一种流编辑器,它是文本处理中非常中的工具,能够完美的配合正则表达式使用,功能不同凡响。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有 改变,除非你使用重定向存储输出。sed主要用来自动编辑一个或多个文件;简化对文件的反复操作;编写转换程序等。
SED的命令执行流程
sed会从数据中一条一条的读取命令,逐条处理和输出,直到数据的最后一行。
模式空间:sed软件内部的一个临时缓存,用于存放读取到的内容。
SED命令和功能
- 命令格式
sed [options] [command] [inputfile(s)]sed [options] -f scriptfile
文中统一实验文件
[root@CentOS7 ~]$cat test
aaa,bbb,ccc
ddd,eee,fff
ggg,hhh,iii
jjj,kkk,lll
mmm,nnn,oooppp,qqq,rrr
- 选项
-n:不输出模式空间内容到屏幕,即不自动打印
-e: 多点编辑
-f: /PATH/SCRIPT_FILE: 从指定文件中读取编辑脚本
-r: 支持使用扩展正则表达式
-i.bak: 备份文件并原处编辑
-h或–help:显示帮助
-V或–version:显示版本信息
- sed命令
a\ -在当前行下面插入文本。
i\ -在当前行上面插入文本。
d -删除,删除选择的行。
D -删除模板块的第一行。
s -替换指定字符
h -拷贝模板块的内容到内存中的缓冲区。
H -追加模板块的内容到内存中的缓冲区。
g - 获得内存缓冲区的内容,并替代当前模板块中的文本。
G -获得内存缓冲区的内容,并追加到当前模板块文本的后面。
l -列表不能打印字符的清单。
n -读取下一个输入行,用下一个命令处理新的行而不是用第一个命令。
N -追加下一个输入行到模板块后面并在二者间嵌入一个新行,改变当前行号码。
p -打印模板块的行。 P(大写) 打印模板块的第一行。
q -退出Sed。
! -表示后面的命令对所有没有被选定的行发生作用。
= -打印当前行号码。 # 把注释扩展到下一个换行符以前。
查找替换
s///:查找替换,支持使用其它分隔符, s@@@, s###替换标记:g: 行内全局替换p: 显示替换成功的行w /PATH/TO/SOMEFILE:将替换成功的行保存至文件中
地址定界:
(1) 不给地址:对全文进行处理(2) 单地址:#:指定的行/pattern/:被此处模式所能够匹配到的每一行(3) 地址范围:#,##,+#/pat1/,/pat2/#,/pat1/(4) ~:步进1~2 奇数行2~2 偶数行
实例演示
1、输出原数据并打印第二行
[root@CentOS7 ~]$sed '2p' test
aaa,bbb,ccc
ddd,eee,fff
ddd,eee,fff
ggg,hhh,iii
jjj,kkk,lll
mmm,nnn,oooppp,qqq,rrr
2、只打印数据第二行
[root@CentOS7 ~]$sed -n '2p' test
ddd,eee,fff
3、打印1到4行
[root@CentOS7 ~]$sed -n '1,4p' test
aaa,bbb,ccc
ddd,eee,fff
ggg,hhh,iii
jjj,kkk,lll
4、只打印含有“ggg”的行
[root@CentOS7 ~]$sed -n '/ggg/p' test
ggg,hhh,iii
5、打印从第二行到含有”ggg”的行
[root@CentOS7 ~]$sed -n '2,/ggg/p' test
ddd,eee,fff
ggg,hhh,iii
6、显示空行行号
[root@CentOS7 ~]$sed -n '/^$/=' test
6
7、打印空行和空行行号
sed -n -e '/^$/p' -e '/^$/=' test6
8、在含有“ggg”的行后加入“test”
[root@CentOS7 ~]$sed '/ggg/a\test' test
aaa,bbb,ccc
ddd,eee,fff
ggg,hhh,iii
test
jjj,kkk,lll
mmm,nnn,oooppp,qqq,rrr
9、在含有“ggg”行前加上“test”
[root@CentOS7 ~]$sed '/ggg/i\test' test
aaa,bbb,ccc
ddd,eee,fff
test
ggg,hhh,iii
jjj,kkk,lll
mmm,nnn,oooppp,qqq,rrr
10、将含有“ggg”的行替换成“test”
[root@CentOS7 ~]$sed '/ggg/c\test' test
aaa,bbb,ccc
ddd,eee,fff
test
jjj,kkk,lll
mmm,nnn,oooppp,qqq,rrr
11、删除空行
[root@CentOS7 ~]$sed '/^$/d' test
aaa,bbb,ccc
ddd,eee,fff
ggg,hhh,iii
jjj,kkk,lll
mmm,nnn,ooo
ppp,qqq,rrr
12、将文件中前3行删除
[root@CentOS7 ~]$sed '1,3d' test
jjj,kkk,lll
mmm,nnn,oooppp,qqq,rrr
13、使用管道删除2到4行
[root@CentOS7 ~]$nl test | sed '2,4d'1 aaa,bbb,ccc5 mmm,nnn,ooo6 ppp,qqq,rrr
14、将文件中的“ggg”替换成“XXX”
[root@CentOS7 ~]$sed 's/g/X/g' test
aaa,bbb,ccc
ddd,eee,fff
XXX,hhh,iii
jjj,kkk,lll
mmm,nnn,oooppp,qqq,rrr
[root@CentOS7 ~]$sed 's/ggg/XXX/' test
aaa,bbb,ccc
ddd,eee,fff
XXX,hhh,iii
jjj,kkk,lll
mmm,nnn,oooppp,qqq,rrr
15、在“ggg”单词前加入“XXX”
[root@CentOS7 ~]$sed -n 's/ggg/XXX&/p' test
XXXggg,hhh,iii
16、在“ggg”单词后面加入“XXX”
[root@CentOS7 ~]$sed -n 's/ggg/&XXX/p' test
gggXXX,hhh,iii
17、将“ggg”替换成“XXX”,并将“ooo”替换成“YYY”
[root@CentOS7 ~]$sed -e 's/g/X/g' -e 's/ooo/YYY/' test
aaa,bbb,ccc
ddd,eee,fff
XXX,hhh,iii
jjj,kkk,lll
mmm,nnn,YYYppp,qqq,rrr
18、将“ggg”替换成“XXX”并备份一份.bak文件
[root@CentOS7 ~]$sed -i.bak 's/ggg/xxx/' test
[root@CentOS7 ~]$cat test.bak
aaa,bbb,ccc
ddd,eee,fff
ggg,hhh,iii
jjj,kkk,lll
mmm,nnn,oooppp,qqq,rrr
[root@CentOS7 ~]$cat test
aaa,bbb,ccc
ddd,eee,fff
xxx,hhh,iii
jjj,kkk,lll
mmm,nnn,oooppp,qqq,rrr
19、打印奇数行
[root@CentOS7 ~]$cat test | sed -n '1~2p'
aaa,bbb,ccc
ggg,hhh,iii
mmm,nnn,ooo
ppp,qqq,rrr
20、打印偶数行
[root@CentOS7 ~]$cat test | sed -n '2~2p'
ddd,eee,fff
jjj,kkk,lll
[root@CentOS7 ~]$sed -n 'n;p' test
ddd,eee,fff
jjj,kkk,lll
21、倒叙显示文件内容
[root@CentOS7 ~]$sed '1!G;h;$!d' test
ppp,qqq,rrrmmm,nnn,ooo
jjj,kkk,lll
ggg,hhh,iii
ddd,eee,fff
aaa,bbb,ccc
[root@CentOS7 ~]$sed -n '1!G;h;$p' test
ppp,qqq,rrrmmm,nnn,ooo
jjj,kkk,lll
ggg,hhh,iii
ddd,eee,fff
aaa,bbb,ccc
22、显示文件的最后一行
[root@CentOS7 ~]$sed 'N;D' test
ppp,qqq,rrr
[root@CentOS7 ~]$sed '$!d' test
ppp,qqq,rrr
23、显示文件的最后两行
[root@CentOS7 ~]$sed '$!N;$!D' testppp,qqq,rrr
24、每行后面加入空行
[root@CentOS7 ~]$sed 'G' test
aaa,bbb,cccddd,eee,fffggg,hhh,iiijjj,kkk,lllmmm,nnn,oooppp,qqq,rrr
25、将文件所有内容改成空行
[root@CentOS7 ~]$sed 'g' test
26、将文件中空行删除,之后在每行后面插入空行
[root@CentOS7 ~]$sed '/^$/d;G' test
aaa,bbb,cccddd,eee,fffggg,hhh,iiijjj,kkk,lllmmm,nnn,oooppp,qqq,rrr
27、删除文件中的偶数行
[root@CentOS7 ~]$sed 'n;d' test
aaa,bbb,ccc
ggg,hhh,iii
mmm,nnn,ooo
ppp,qqq,rrr
Linux三剑客之SED相关推荐
- Linux实战教学笔记12:linux三剑客之sed命令精讲
第十二节 linux三剑客之sed命令精讲 标签(空格分隔): Linux实战教学笔记-陈思齐 ---更多资料点我查看 1,前言 我们都知道,在Linux中一切皆文件,比如配置文件,日志文件,启动文件 ...
- 12.Linux三剑客之sed
文章目录 1.sort命令 2.uniq 命令 3.cut 命令 4.tr命令 6.wc命令 7.linux三剑客之sed 7.1格式 7.2参数 7.3定位 1.数字定位法 2.正则定位法 3.数字 ...
- 深入浅出linux三剑客之sed必杀技一例
缘起:上完培训课后,同学们对sed加正则处理问题的热情高涨,氛围相当好,但是,有个别同学还是有些晕乎,因此,撰写此文.此例如果搞熟练了,sed和正则的大部分常用技术你掌握起来就简单了. 如果还有不会的 ...
- 15分钟搞定Linux三剑客 grep sed awk
剑客grep 来者何人 grep是linux上的字符串搜索匹配命令.这个名字来自于linux编辑器vim的一个命令g/re/p,表示全局匹配某个正则表达式并打印出来,这也体现了grep自身的功能. 基 ...
- Linux三剑客 grep sed awk 详细使用方法
Linux中最重要的三个命令在业界被称为"三剑客",它们是awk,sed,grep. 我们现在知道Linux下一切皆文件,对Linux的操作就是对文件的处理,那么怎么能更好的处理文 ...
- linux三剑客面试题,Linux三剑客之sed
8种机械键盘轴体对比 本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选? sed命令主要用来修改文本文件用的,使用命令的方式来快速修改文件. 和vim一样,但是它是使用交互式命令的. 一般和管道 ...
- linux三剑客之sed命令精讲
1,前言 我们都知道,在Linux中一切皆文件,比如配置文件,日志文件,启动文件等等.如果我们相对这些文件进行一些编辑查询等操作时,我们可能会想到一些vi,vim,cat,more等命令.但是这些命令 ...
- Linux 三剑客之SED行天下
功能说明 Sed是Strem Editor(流编辑器)缩写,是操作.过滤和转换文本内容的强大工具.常用功能有增删改查,过滤,取行. [root@oldboy ~]# sed --version #→ ...
- linux三剑客awk、sed、grep与cut的总结
在Linux中,一切皆文件,对Linux的操作就是对文件的处理.对文件操作处理最重要的三个命令是grep.sed.awk,它们在业界被称为"三剑客". 三剑客的功能非常强大,但它们 ...
- Linux实战教学笔记12-linux三剑客之sed命令精讲
第十二节 linux三剑客之sed命令精讲 标签(空格分隔): Linux实战教学笔记-陈思齐 ---更多资料点我查看 1,前言 我们都知道,在Linux中一切皆文件,比如配置文件,日志文件,启动文件 ...
最新文章
- 老程序员的经验和价值在哪里
- 梁胜博士亲解Rancher 2.0:K8s之上的Rancher魔法
- 线性链条件随机场与HMM在viterbi算法中的图解对比
- android和windows技术,《技术》android运行windows的优化与试调整
- instr 函数从后往前计数 instr(spell,' ',-1)
- 【渝粤教育】广东开放大学 中国法律史 形成性考核 (31)
- pl/sql实现打印九九乘法表
- 挥别百度,那些顶级技术人才都去哪儿了?
- 入侵检测技术目的-发现黑客
- 苹果手机解压缩软件_照片压缩软件哪款好用?推荐5款好用的图片压缩软件
- 智慧校园视频监控管理系统平台建设的详情分析
- 树莓派系统备份与还原
- 关于(广义)代数特征值问题的一点注记
- CentOS6.5下MariaDB日志及事物详解和基本操作语句
- 核桃编程学python吗_西瓜编程和核桃编程哪个好
- Android音频学习之MediaExtractor,提取音频视频轨道数据(从视频中分离音频视频数据)
- 【动态规划】HDU 1081 XMU 1031 To the Max
- jenkins-配置python
- 计算机语言绝对值表示方法,python表示绝对值的方法是什么
- 嫌官方文档太烂?TensorFlow 开源工具书,助你快速上手开发!
热门文章
- 【FinE】EMD/EEMD方法及金融数据分解
- c语言点阵字库12*16,用C语言编程16点阵字库
- P8-图标字体-font-awesome-伪类-阿里图标字体icnfont-字体-行高-文本样式
- 微信小程序switch 样式重写
- java更改文件编码方式_java 更改文件编码
- openmodelica安装
- xp系统无法访问服务器共享打印机,XP系统无法访问共享打印机解决方案
- win7打开xp共享的计算机,win7系统如何访问xp共享打印机_windows7连接xp共享打印机的方法...
- 中国电信物联网平台入门学习笔记4:连接时间过长,数据传输消失,电信平台显示延迟...
- 嵌入式单片机基础篇(五)之stm32F1以及51单片机时钟详解