Chinaunix首页 | 论坛 | 博客
  • 博客访问: 207850
  • 博文数量: 87
  • 博客积分: 192
  • 博客等级: 入伍新兵
  • 技术积分: 455
  • 用 户 组: 普通用户
  • 注册时间: 2011-04-14 07:44
文章分类

全部博文(87)

文章存档

2013年(1)

2012年(86)

分类:

2012-04-14 15:41:08

原文地址:sed之Lable使用详解 作者:zooyo

内容:
AA
BC
AA
CB
CC
AA

 

结果:
AA YES
BC NO YES
AA YES
CB NO YES
CC NO YES
AA YES

sed '{/AA/b lable;s/$/ NO/;:lable;s/$/ YES/}' file
# 匹配到AA时,"b" 跳转去标签lable处,即执行:lable后面的命令 s/$/ YES/ (":"是申明标签)
# 继续匹配第二行,没有匹配到AA,那么执行 s/$/ NO/ 并且还会继续执行标签后的命令 s/$/ YES/


要想得到结果:
AA YES
BC NO
AA YES
CB NO
CC NO
AA YES

sed '/^AA/ba;s/$/ NO/;b;:a;s/$/ YES/' file
# 匹配到行首是AA时,"b"跳转去标签a处,执行 s/$/ YES/
# 继续匹配第二行,没有匹配到AA,那么执行 s/$/ NO/ 后跳转到"",既执行到脚本末尾,则跳过了命令 s/$/ YES/

sed '/^AA/s/$/ YES/;t;s/$/ NO/' file
# 匹配到行首是AA的行成功,执行 s/$/ YES/ ,则"t"跳转到""即脚本末尾
# 匹配到行首是AA失败,则"t"不生效,继续执行后面的命令 s/$/ NO/


结果:
AA YES NO
BC
AA YES NO
CB
CC
AA YES NO

sed '/^AA/s/$/ YES/;T;s/$/ NO/' file
# T的作用和t刚好相反,前面匹配为假则跳去""即脚本结尾

阅读(699) | 评论(0) | 转发(0) |
0

上一篇:sed之n与N运用实例

下一篇:Bash快捷键

给主人留下些什么吧!~~