Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2414414
  • 博文数量: 298
  • 博客积分: 7876
  • 博客等级: 准将
  • 技术积分: 5500
  • 用 户 组: 普通用户
  • 注册时间: 2011-02-23 13:39
文章存档

2013年(2)

2012年(142)

2011年(154)

分类: Python/Ruby

2012-04-18 19:43:38

awksed的范围显示

 

转自:

 

题目:

1.      awk '/foo1/,/foo2/'

2.      sed -n '/foo1/,/foo2/p'

3.      实现的功能一样么?

解答:

两者不一样,原因如下:

 

不管是awk还是sed,默认下表达式/foo1/,/foo2/的布尔值为false

 

awk '/foo1/,/foo2/'

/foo1/为真,表达式的布尔值为true,执行其后的action(这里是print),

同时判断/foo2/是否为真,如果为真,匹配表达式的布尔值变成false,否则,不改变表达式的布尔值,直到/foo2/匹配为真。

 

sed -n '/foo1/,/foo2/p'

/foo1/为真,表达式的布尔值为true,执行其后的actionp指令),

awk不同的是,sed是在/foo1/匹配为真的下一行,才对/foo2/进行判断,也就当读入下一行时,

同样,如果/foo2/为真,匹配表达式的布尔值变成false,否则,不改变表达式的布尔值,直到/foo2/匹配为真。

 

示例:注意同种颜色表示同一范围内

cat file

foo1 foo2

foo2

foo1

xxx

yyy

foo2

zzz

 

awk '/foo1/,/foo2/' file

foo1 foo2

foo1

xxx

yyy

foo2

 

sed -n '/foo1/,/foo2/p' file

foo1 foo2

foo2

foo1

xxx

yyy

foo2

 

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

g_programming2012-04-19 23:22:50

认真的鱼123: 恩,很好呢,博主写的很清楚的说.....
看得别人一个比赛的 不过真的不错呢 呵呵

g_programming2012-04-19 22:09:35

认真的鱼123: 恩,很好呢,博主写的很清楚的说.....
看的一个比赛的 里面都是经典的呢 呵呵

认真的鱼1232012-04-19 22:06:13

恩,很好呢,博主写的很清楚的说