三剑客-sed
2024-10-22 05:16:22
1.sed命令概述说明:
字符流编辑工具(行编辑工具)
2.sed命令作用说明:
(1)擅长对行进行操作处理
(2)擅长将文件的信息进行修改调整/删除
3.sed具体功能
(1)文件中添加信息的能力(增)
(2)文件中删除信息的能力(删)
(3)文件中修改信息的能力(改)
(4)文件中查询信息的能力(查)
4.sed命令的语法格式
sed [OPTION]… {script-only-if-no-other-script} [input-file].
命令 [参数] {条件-处理} 处理文件
5.sed命令执行原理
命令执行原理
6.sed命令实践操作
创建测试环境
cat >shuai.txt<<EOF
101,zhaosan,CEO
102,zhangsi,CTO
103,Aboluo,COO
104,yy,CFO
105,fergouzi,CIO
EOF
(1)sed命令查询信息方法
a.根据文件的行号进行查询
#打印单行信息
[root@shuai ~]# sed -n '2p' shuai.txt
102,zhangsi,CTO
#打印第一行到第三行的信息
[root@shuai ~]# sed -n '1,3p' shuai.txt
101,zhaosan,CEO
102,zhangsi,CTO
103,Aboluo,COO
#打印第一行和第三行的信息
[root@shuai ~]# sed -n '1p;3p' shuai.txt
101,zhaosan,CEO
103,Aboluo,COO
b.根据文件的内容进行查询
#将有zhaosan的打印出来
[root@shuai ~]# sed -n '/zhaosan/p' shuai.txt
101,zhaosan,CEO
#将zhaosan到Aboluo的行打印出来(连续)
[root@shuai ~]# sed -n '/zhaosan/,/Aboluo/p' shuai.txt
101,zhaosan,CEO
102,zhangsi,CTO
103,Aboluo,COO
#将zhaosan和Abolu的行打印出来(不连续)
[root@shuai ~]# sed -n '/zhaosan/p;/Aboluo/p' shuai.txt
101,zhaosan,CEO
103,Aboluo,COO
(2)sed添加信息的方法
a.在文件的第一行添加信息
#在文件第一行添加:100,lisi,OOO
[root@shuai ~]# sed '1i100,lisi,OOO' shuai.txt
100,lisi,OOO
101,zhaosan,CEO
102,zhangsi,CTO
103,Aboluo,COO
104,yy,CFO
105,fergouzi,CIO
b.在文件的最后一行添加信息
#在文件最后一行添加:106,wangqi,YOO
[root@shuai ~]# sed '$a106,wangqi,YOO' shuai.txt
101,zhaosan,CEO
102,zhangsi,CTO
103,Aboluo,COO
104,yy,CFO
105,fergouzi,CIO
106,wangqi,YOO
c.在文件上下添加一行信息
#在第二行前和第三行后添加信息
[root@shuai ~]# sed -e '2ioldboy.txt' -e '3aolddog.txt' shuai.txt
101,zhaosan,CEO
oldboy.txt
102,zhangsi,CTO
103,Aboluo,COO
olddog.txt
104,yy,CFO
105,fergouzi,CIO
d.添加多行信息
#在文件结尾添加多行信息
[root@shuai ~]# sed '$adashazi\ndafengzi' shuai.txt
101,zhaosan,CEO
102,zhangsi,CTO
103,Aboluo,COO
104,yy,CFO
105,fergouzi,CIO
dashazi
dafengzi
(3)sed命令删除信息方法
a.删除单行信息
#删除第三行信息
[root@shuai ~]# sed '3d' shuai.txt
101,zhaosan,CEO
102,zhangsi,CTO
104,yy,CFO
105,fergouzi,CIO
b.删除多行信息
#删除第三行到第五行
[root@shuai ~]# sed '3,5d' shuai.txt
101,zhaosan,CEO
102,zhangsi,CTO
#删除第三行和第五行
[root@shuai ~]# sed '3d;5d' shuai.txt
101,zhaosan,CEO
102,zhangsi,CTO
104,yy,CFO
#删除有zhaosan的行
[root@shuai ~]# sed '/zhaosan/d' shuai.txt
102,zhangsi,CTO
103,Aboluo,COO
104,yy,CFO
105,fergouzi,CIO
c.删除空行
[root@shuai ~]# sed '/^$/d' shuai.txt
101,zhaosan,CEO
102,zhangsi,CTO
103,Aboluo,COO
104,yy,CFO
105,fergouzi,CIO
[root@shuai ~]# sed -n '/^$/!p' shuai.txt
101,zhaosan,CEO
102,zhangsi,CTO
103,Aboluo,COO
104,yy,CFO
105,fergouzi,CIO
(4)sed命令修改信息的方法
a.单个替换
#将zhaosan替换成dashazi
[root@shuai ~]# sed s#zhaosan#dashazi#g shuai.txt
101,dashazi,CEO
102,zhangsi,CTO
103,Aboluo,COO
104,yy,CFO
105,fergouzi,CIO
b.修改文件并备份文件
[root@shuai ~]# sed -i.bak s#zhangsi#dafengzi#g shuai.txt
[root@shuai ~]# cat shuai.txt
101,zhaosan,CEO
102,dafengzi,CTO
103,Aboluo,COO
104,yy,CFO
105,fergouzi,CIO
[root@shuai ~]# ls
shuai.txt.bak shuai.txt
c.后向引用前项,取IP地址
[root@shuai ~]# ip a s eth0|sed -nr '3s#.*inet (.*)/24.*#\1#gp'
10.0.0.200
d.将第一行替换成dashazi
[root@shuai ~]# sed '1cdashazi' shuai.txt
dashazi
102,dafengzi,CTO
103,Aboluo,COO
104,yy,CFO
105,fergouzi,CIO
总结:sed命令指令信息
p print 输出信息
i insert 插入信息,在指定信息前边插入新的信息
a append 附加信息,在指定信息后边附加新的信息
d delete 删除
s substitute 替换信息
g 全局替换
c 替换修改一整行信息
7.sed命令的参数信息
-n 取消默认输出
-r 识别扩展正则
-i 真实编辑文件(将内存中的信息覆盖到磁盘中,放到所有参数后边)
-e 识别sed命令的多个指令
练习:将shuai.txt修改为shuai.jpg
环境准备
[root@shuai ~/shuai]# touch shuai{01..10}.txt
[root@shuai ~/shuai]# ls
shuai01.txt shuai03.txt shuai05.txt shuai07.txt shuai09.txt
shuai02.txt shuai04.txt shuai06.txt shuai08.txt shuai10.txt
解答
[root@shuai ~/shuai]# ls shuai* |sed -r 's#(.*).txt# mv & \1.jpg#g'
mv shuai01.txt shuai01.jpg
mv shuai02.txt shuai02.jpg
mv shuai03.txt shuai03.jpg
mv shuai04.txt shuai04.jpg
mv shuai05.txt shuai05.jpg
mv shuai06.txt shuai06.jpg
mv shuai07.txt shuai07.jpg
mv shuai08.txt shuai08.jpg
mv shuai09.txt shuai09.jpg
mv shuai10.txt shuai10.jpg
[root@shuai ~/shuai]# ls shuai* |sed -r 's#(.*).txt# mv & \1.jpg#g' |bash
[root@shuai ~/shuai]# ls
shuai01.jpg shuai03.jpg shuai05.jpg shuai07.jpg shuai09.jpg
shuai02.jpg shuai04.jpg shuai06.jpg shuai08.jpg shuai10.jpg
[root@shuai ~/shuai]# rename .jpg .txt shuai*
[root@shuai ~/shuai]# ls
shuai01.txt shuai03.txt shuai05.txt shuai07.txt shuai09.txt
shuai02.txt shuai04.txt shuai06.txt shuai08.txt shuai10.txt
最新文章
- BNUOJ48605International Collegiate Routing Contest 题解
- 从零开始学ios开发(一):准备起航
- nodejs ssh2
- WebSerivce测试工具 Storm
- PowerShell String对象方法 1
- openjpa框架入门_项目 database 启动project 初始化(三)
- win7 64位系统调试zkemkeeper.dll出错误解决
- python开发环境安装
- window窗体程序意外崩溃,EventType clr20r3错误的解决方法
- C语言程序设计课程总结
- OutOfMemoryError/OOM/内存溢出异常实例分析--堆内存溢出
- Web从入门到放弃<;5>;
- 【C++】C++中的数组
- 转:IIS 应用程序池 内存 自动回收
- 仓储层接口IBaseRepository解析
- hustoj 管理员和后台设置
- stm32f103_高级定时器——输入捕获/输出比较中断+pwm=spwm生成
- css中计数器的实现-笔记
- jQuery Sizzle选择器(二)
- C# 获取北京时间 (根据纪元时间(1970/1/1)转换为DateTime)