Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2979062
  • 博文数量: 272
  • 博客积分: 5544
  • 博客等级: 大校
  • 技术积分: 5496
  • 用 户 组: 普通用户
  • 注册时间: 2011-03-08 00:48
个人简介

  每个人都要有一个骨灰级的爱好,不为金钱,而纯粹是为了在这个领域享受追寻真理的快乐。

文章分类

全部博文(272)

文章存档

2015年(2)

2014年(5)

2013年(25)

2012年(58)

2011年(182)

分类: LINUX

2011-05-14 14:23:41

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

阅读(1879) | 评论(4) | 转发(2) |
1

上一篇:awk1line中文修正版

下一篇:chroot用法详解

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

zooyo2012-06-17 00:02:35

ivyliner: sed '/^AA/s/$/ YES/;t;s/$/ NO/' file
# 匹配到行首是AA的行成功,执行 s/$/ YES/ ,则"t"跳转到""即脚本末尾
# 匹配到行首是AA失败,则&.....
命令是下面的,你看成上面的命令了吧.

zooyo2012-06-17 00:01:27

ivyliner: sed '/^AA/s/$/ YES/;t;s/$/ NO/' file
# 匹配到行首是AA的行成功,执行 s/$/ YES/ ,则"t"跳转到""即脚本末尾
# 匹配到行首是AA失败,则&.....
谢谢指正.

ivyliner2012-06-16 23:21:31

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
这个结果有错:-), 应该是
AA YES
BC NO
AA YES
CB NO
CC NO
AA YES

ybb8962012-02-07 16:31:31

.......