码迷,mamicode.com
首页 > 系统相关 > 详细

Linux三剑客之Sed

时间:2016-06-07 16:30:07      阅读:272      评论:0      收藏:0      [点我收藏+]

标签:三剑客   编辑器   sed   linux   

    sed(流编辑器)是一个很好的文件处理工具,本身是一个管道命令,主要是以行为单位进行处理,可以将数据行进行替换、删除、新增、选取等特定工作。

   

  •     执行流程:从文件中读取一行,处理一行,再读取一行,再处理一行,如此反复,按行处理;sed默认匹配所有行。

主要参数:

    -i  修改。

    -n  取消默认输出 配合p使用。

    -r  支持扩展正则表达式

  •     Script:

              1a   追加(指定行的下一行追加内容)

              2i       插入(指定行的上一行插入内容)

              3d   删除

              4p      打印

              5c  用新行内容取代旧行内容

              6s  替换,搭配g全局替换


  • 语法

语法

含义

10  {script}

对指定行处理

10,20  {script}

对第1020行处理,包括第1020

10,+20  {script}

对第1030行处理,包括第1030

1~2  {script}

135等奇数行进行处理

10,$  {script}

对第10行到最后一行尽心出力

/oldboy/  {script}

对匹配oldboy的行进行处理

/oldboy/,/alex/  {script}

oldboyalex之间的行进行处理

/oldboy/,${script}

oldboy到最后一行进行处理

1,/oldboy/  {script}

对地一行到匹配oldboy的行进行处理

/oldboy/,+2  {script}

oldboy之后对两行进行处理

 

实例:

  •    追加文本到指定行后

[root@oldboy ~]# sed ‘2a 106,dandan,CSO‘ person.txt

101,oldboy,CEO

102,zhangyao,CTO

106,dandan,CSO

103,Alex,COO

104,yy,CFO

105,feixue,CIO

  • 插入文本到指定行前

[root@oldboy ~]# sed ‘2i 106,dandan,CSO‘ person.txt

101,oldboy,CEO

106,dandan,CSO

102,zhangyao,CTO

103,Alex,COO

104,yy,CFO

105,feixue,CIO

  • 多行追加

[root@oldboy ~]# sed ‘2a 106,dandan,CSO\n107,bingbing,CCO‘person.txt  通过\n元字符达到

101,oldboy,CEO

102,zhangyao,CTO

106,dandan,CSO

107,bingbing,CCO

103,Alex,COO

104,yy,CFO

105,feixue,CIO


  • 删除指定行

删除第二行

[root@oldboy ~]#sed ‘2d‘ person.txt

101,oldboy,CEO

103,Alex,COO

104,yy,CFO

105,feixue,CIO

删除第25

[root@oldboy ~]#sed ‘2,5d‘ person.txt

101,oldboy,CEO                                                                           

删除第3行到最后一行

[root@oldboy ~]#sed ‘3,$d‘ person.txt

101,oldboy,CEO

102,zhangyao,CTO

删除包含"oldboy"的行

[root@oldboy ~]#sed ‘/oldboy/d‘ person.txt

102,zhangyao,CTO

103,Alex,COO

104,yy,CFO

105,feixue,CIO

  • 取代  

新行取代原来的行

将第二行内容取代为指定的内容

[root@oldboy ~]#sed ‘2c 106,dandan,CSO‘person.txt

101,oldboy,CEO

106,dandan,CSO

103,Alex,COO

104,yy,CFO

105,feixue,CIO

  • 替换

1[root@oldboy ~]# sed‘s#zhangyao#oldboyedu#g‘ person.txt    zhangyao更改oldboyedu

101,oldboy,CEO

102,oldboyedu,CTO

103,Alex,COO

104,yy,CFO

105,feixue,CIO

  • 特殊符:& 代表被替换的内容

13行的C替换为--C--

[root@oldboy ~]#sed ‘1,3s#C#--&--#g‘ person.txt        &等于C

101,oldboy,--C--EO     

102,zhangyao,--C--TO

103,yy,--C--OO

104,feixue,CFO

105,dandan,CIO

  • 查询

查询第二行

[root@oldboy ~]#sed -n ‘2p‘ person.txt

102,zhangyao,CTO

 

第二行到第三行

[root@oldboy ~]#sed -n ‘2,3p‘ person.txt

102,zhangyao,CTO

103,Alex,COO

 

查询第135奇数行

[root@oldboy ~]#sed -n ‘1~2p‘ person.txt

101,oldboy,CEO

103,Alex,COO

105,feixue,CIO

 

查询包含CTO的行

[root@oldboy ~]#sed -n ‘/CTO/p‘ person.txt

102,zhangyao,CTO

 

查询从CTOCFO之间的行

[root@oldboy ~]#sed -n ‘/CTO/,/CFO/p‘ person.txt

102,zhangyao,CTO

103,Alex,COO

104,yy,CFO



Linux三剑客之Sed

标签:三剑客   编辑器   sed   linux   

原文地址:http://xhdyw.blog.51cto.com/2891046/1786992

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!