Chinaunix首页 | 论坛 | 博客
  • 博客访问: 69891
  • 博文数量: 12
  • 博客积分: 266
  • 博客等级: 二等列兵
  • 技术积分: 181
  • 用 户 组: 普通用户
  • 注册时间: 2011-06-27 16:20
文章分类

全部博文(12)

文章存档

2012年(12)

我的朋友

分类: Python/Ruby

2012-10-15 14:36:59

sed操作实例(一)中列举了替换,删除,插入,追加,更改的sed基本操作实例,现在继续通过实例来学习应用sed, 列表命令l,置换命令y,打印行号变量。

测试实例文本

  1. 1:2:3:a:b:c:A:B:C:1:2:3
  2. 1:2:3:4:a:b:c:d:A:B:C:D:1:2:3:4
  3. 1:2:3:4:5:a:b:c:d:e:A:B:C:D:E:1:2:3:4:5
  4. 1:2:3:4:5:6:a:b:c:d:e:f:A:B:C:D:E:F:1:2:3:4:5:6
  5. 1:2:3:4:5:6:7:a:b:c:d:e:f:g:A:B:C:D:E:F:G:1:2:3:4:5:6:7
  6. 1:2:3:4:5:6:7:8:a:b:c:d:e:f:g:h:A:B:C:D:E:F:G:H:1:2:3:4:5:6:7:8
  7. ^M
  8. ^]
·去除非打印字符,列表命令'l'显示模式空间的内容,并将非打印字符显示为2个数字的ASCll字符

列表命令l

  1. [root@testserver ~]# sed -n 'l' test.txt
  2. 1:2:3:a:b:c:A:B:C:1:2:3$
  3. 1:2:3:4:a:b:c:d:A:B:C:D:1:2:3:4$
  4. 1:2:3:4:5:a:b:c:d:e:A:B:C:D:E:1:2:3:4:5$
  5. 1:2:3:4:5:6:a:b:c:d:e:f:A:B:C:D:E:F:1:2:3:4:5:6$
  6. 1:2:3:4:5:6:7:a:b:c:d:e:f:g:A:B:C:D:E:F:G:1:2:3:4:5:6:7$
  7. 1:2:3:4:5:6:7:8:a:b:c:d:e:f:g:h:A:B:C:D:E:F:G:H:1:2:3:4:5:6:7:8$
  8. \r$
  9. \035$
  10. [root@testserver ~]#
  11. [root@testserver ~]#
  12. [root@testserver ~]# sed 's/^M/999/' test.txt
  13. 1:2:3:a:b:c:A:B:C:1:2:3
  14. 1:2:3:4:a:b:c:d:A:B:C:D:1:2:3:4
  15. 1:2:3:4:5:a:b:c:d:e:A:B:C:D:E:1:2:3:4:5
  16. 1:2:3:4:5:6:a:b:c:d:e:f:A:B:C:D:E:F:1:2:3:4:5:6
  17. 1:2:3:4:5:6:7:a:b:c:d:e:f:g:A:B:C:D:E:F:G:1:2:3:4:5:6:7
  18. 1:2:3:4:5:6:7:8:a:b:c:d:e:f:g:h:A:B:C:D:E:F:G:H:1:2:3:4:5:6:7:8
  19. 999

  20. [root@testserver ~]
·置换命令y和替换命令有所不同,y是将符合的所以字符都替换,s是只针对特指的字符串完全匹配后替换

置换命令y

  1. [root@testserver ~]# sed 'y/1:/1@/' test.txt  #把:都转换为@,y/左/右/,左右字符要等长
  2. 1@2@3@a@b@c@A@B@C@1@2@3
  3. 1@2@3@4@a@b@c@d@A@B@C@D@1@2@3@4
  4. 1@2@3@4@5@a@b@c@d@e@A@B@C@D@E@1@2@3@4@5
  5. 1@2@3@4@5@6@a@b@c@d@e@f@A@B@C@D@E@F@1@2@3@4@5@6
  6. 1@2@3@4@5@6@7@a@b@c@d@e@f@g@A@B@C@D@E@F@G@1@2@3@4@5@6@7
  7. 1@2@3@4@5@6@7@8@a@b@c@d@e@f@g@h@A@B@C@D@E@F@G@H@1@2@3@4@5@6@7@8


  8. [root@testserver ~]# sed 's/1:/1@/' test.txt #匹配到1:后才进行替换
  9. 1@2:3:a:b:c:A:B:C:1:2:3
  10. 1@2:3:4:a:b:c:d:A:B:C:D:1:2:3:4
  11. 1@2:3:4:5:a:b:c:d:e:A:B:C:D:E:1:2:3:4:5
  12. 1@2:3:4:5:6:a:b:c:d:e:f:A:B:C:D:E:F:1:2:3:4:5:6
  13. 1@2:3:4:5:6:7:a:b:c:d:e:f:g:A:B:C:D:E:F:G:1:2:3:4:5:6:7
  14. 1@2:3:4:5:6:7:8:a:b:c:d:e:f:g:h:A:B:C:D:E:F:G:H:1:2:3:4:5:6:7:8


  15. [root@testserver ~]# sed 's/abc/ABC/' test.txt #匹配不到abc字符串,没有替换发生
  16. 1:2:3:a:b:c:A:B:C:1:2:3
  17. 1:2:3:4:a:b:c:d:A:B:C:D:1:2:3:4
  18. 1:2:3:4:5:a:b:c:d:e:A:B:C:D:E:1:2:3:4:5
  19. 1:2:3:4:5:6:a:b:c:d:e:f:A:B:C:D:E:F:1:2:3:4:5:6
  20. 1:2:3:4:5:6:7:a:b:c:d:e:f:g:A:B:C:D:E:F:G:1:2:3:4:5:6:7
  21. 1:2:3:4:5:6:7:8:a:b:c:d:e:f:g:h:A:B:C:D:E:F:G:H:1:2:3:4:5:6:7:8


  22. [root@testserver ~]# sed 'y/abc/ABC/' test.txt #凡是有a就替换A,有c就替换B,有c就替换C
  23. 1:2:3:A:B:C:A:B:C:1:2:3
  24. 1:2:3:4:A:B:C:d:A:B:C:D:1:2:3:4
  25. 1:2:3:4:5:A:B:C:d:e:A:B:C:D:E:1:2:3:4:5
  26. 1:2:3:4:5:6:A:B:C:d:e:f:A:B:C:D:E:F:1:2:3:4:5:6
  27. 1:2:3:4:5:6:7:A:B:C:d:e:f:g:A:B:C:D:E:F:G:1:2:3:4:5:6:7
  28. 1:2:3:4:5:6:7:8:A:B:C:d:e:f:g:h:A:B:C:D:E:F:G:H:1:2:3:4:5:6:7:8
·打印命令p和其行号变量=

行号打印

  1. [root@testserver ~]# sed -n '1,${=;p}' test.txt
  2. 1
  3. 1:2:3:a:b:c:A:B:C:1:2:3
  4. 2
  5. 1:2:3:4:a:b:c:d:A:B:C:D:1:2:3:4
  6. 3
  7. 1:2:3:4:5:a:b:c:d:e:A:B:C:D:E:1:2:3:4:5
  8. 4
  9. 1:2:3:4:5:6:a:b:c:d:e:f:A:B:C:D:E:F:1:2:3:4:5:6
  10. 5
  11. 1:2:3:4:5:6:7:a:b:c:d:e:f:g:A:B:C:D:E:F:G:1:2:3:4:5:6:7
  12. 6
  13. 1:2:3:4:5:6:7:8:a:b:c:d:e:f:g:h:A:B:C:D:E:F:G:H:1:2:3:4:5:6:7:8
  14. 7

  15. 8

  16. [root@testserver ~]
·退出命令q,匹配后终止继续往下匹配,不能和-i进行操作,防止对q之后的原文件进行损坏。

退出命令q

  1. [root@testserver ~]# sed '3q' test.txt
  2. 1:2:3:a:b:c:A:B:C:1:2:3
  3. 1:2:3:4:a:b:c:d:A:B:C:D:1:2:3:4
  4. 1:2:3:4:5:a:b:c:d:e:A:B:C:D:E:1:2:3:4:5

阅读(1201) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~