课堂笔记Day18-59期

day18三剑客之sed

sed (stream editor 流编辑器)

sed的功能:增删改查

sed 执行过程

-n 取消默认输出
seq -n '3p' /oldboy/oldboy.txt

执行过程
命令格式和功能

功能:增删改查

1.查:p print(查看)

根据行号进行查找
查看lidao.txt这个文件中第三行的内容

[root@cuihua ~]# cat lidao.txt
101,oldboy,CEO
102,zhangyao,CTO
103,Alex,COO
104,yy,CFO
105,feixue,CIO
110,lidao,COCO
[root@cuihua ~]# sed -n '3p' lidao.txt 
103,Alex,COO

根据行号范围进行查找
查看lidao.txt这个文件中第二行到第四行的内容

[root@cuihua ~]# cat lidao.txt
101,oldboy,CEO
102,zhangyao,CTO
103,Alex,COO
104,yy,CFO
105,feixue,CIO
110,lidao,COCO
[root@cuihua ~]# sed -n '2,4p' lidao.txt 
102,zhangyao,CTO
103,Alex,COO
104,yy,CFO

根据正则进行过滤
查看lidao.txt文件中带oldboy这个内容的行

[root@cuihua ~]# cat lidao.txt
101,oldboy,CEO
102,zhangyao,CTO
103,Alex,COO
104,yy,CFO
105,feixue,CIO
110,lidao,COCO
 [root@cuihua ~]# sed -rn '/oldboy/p' lidao.txt 
101,oldboy,CEO

使用正则表示范围
查看lidao.txt文件中带102内容的行到带105内容的行

[root@cuihua ~]# sed -n '/102/,/105/p' lidao.txt 
102,zhangyao,CTO
103,Alex,COO
104,yy,CFO
105,feixue,CIO

2.增(类似>>)

参数 a : append 在第几行下增加内容
在第二行下插入180,kangxu,QAQ

[root@cuihua ~]# cat lidao.txt
101,oldboy,CEO
102,zhangyao,CTO
103,Alex,COO
104,yy,CFO
105,feixue,CIO
110,lidao,COCO
 [root@cuihua ~]# sed '2a180,kangxu,QAQ' lidao.txt
 101,oldboy,CEO
 102,zhangyao,CTO
 111,kangxu,QAQ
 103,Alex,COO
 104,yy,CFO
 105,feixue,CIO
 110,lidao,COCO

参数 i: 在第几行上面增加内容
在第二行上插入111,kangxu,QAQ

[root@cuihua~]# sed >'2i111,kangxu,QAQ' lidao.txt
101,oldboy,CEO
111,kangxu,QAQ
102,zhangyao,CTO
103,Alex,COO
104,yy,CFO
105,feixue,CIO
110,lidao,COCO

参数 c :replac 先清空再写入
把第二行内容替换为111,kangxu,QAQ

[root@cuihua~]# cat lidao.txt
101,oldboy,CEO
102,zhangyao,CTO
103,Alex,COO
104,yy,CFO
105,feixue,CIO
110,lidao,COCO
[root@cuihua ~]# sed '2c111,kangxu,QAQ' lidao.txt
101,oldboy,CEO
180,kangxu,QAQ
103,Alex,COO
104,yy,CFO
105,feixue,CIO
110,lidao,COCO

3.删

参数 d:删除
把第二行内容删除掉

[root@cuihua ~]# cat lidao.txt
101,oldboy,CEO
102,zhangyao,CTO
103,Alex,COO
104,yy,CFO
105,feixue,CIO
110,lidao,COCO
[root@cuihua ~]# sed '2d'  lidao.txt                                                                                            
101,oldboy,CEO
103,Alex,COO
104,yy,CFO
105,feixue,CIO
110,lidao,COCO 

4.改

参数s:sub(默认替换第一个字符) g(全局替换)
格式:sed 's###g'
把oldboy替换为oldgirl

 [root@cuihua ~]# cat lidao.txt
 101,oldboy,CEO
 102,zhangyao,CTO
 103,Alex,COO
 104,yy,CFO
 105,feixue,CIO
 110,lidao,COCO
 [root@cuihua ~]# sed 's#oldboy#oldgirl#g' lidao.txt
 101,oldgirl,CEO
 102,zhangyao,CTO
 103,Alex,COO
 104,yy,CFO
 105,feixue,CIO
 110,lidao,COCO

后向引用(在前面两个(##)把你要的内容保护起来后两个(##)中间用\数字引用)

把123456 改为<123456>

[root@cuihua ~]# echo 123456 | sed -r 's#(.*)#<\1>#g'
<123456>

把123456 改为12<34>56

[root@cuihua ~]# echo 123456 | sed -r 's#(..)(..)(..)#\1<\2>\3#g'
12<34>56 

把123456改为<1><2><3><4><5><6>

[roo

你可能感兴趣的:(课堂笔记Day18-59期)