Chinaunix首页 | 论坛 | 博客
  • 博客访问: 402050
  • 博文数量: 112
  • 博客积分: 10
  • 博客等级: 民兵
  • 技术积分: 800
  • 用 户 组: 普通用户
  • 注册时间: 2010-12-29 13:41
文章分类

全部博文(112)

文章存档

2020年(1)

2018年(10)

2017年(27)

2016年(18)

2015年(31)

2014年(25)

分类: LINUX

2014-09-24 15:41:39

原文地址: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刚好相反,前面匹配为假则跳去""即脚本结尾

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

上一篇:shell中特殊符号

下一篇:redhat as4上安装yum

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