三剑客-sed
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
Linux运维

浙公网安备 33010602011771号