免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3366 | 回复: 6
打印 上一主题 下一主题

awk中的模式匹配问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-09-20 14:53 |只看该作者 |倒序浏览
Dear all

   昨天我有贴了一张awk的贴子,
http://bbs.chinaunix.net/viewthr ... &extra=page%3D1

   后来经过waker的帮助,最后是ok了

  但是我有一个疑问在awk中
pro==1 && /END IF/
{                                                                              
print $0;                                                                       
print "   CALL cl_used(g_prog,l_time,1) RETURNING l_time No."BUG;               
pro=0;                                                                          
beg=1;                                                                          
}

{if (pro==1 && $0~/END IF/){                                                   
print $0;                                                                       
print "   CALL cl_used(g_prog,l_time,1) RETURNING l_time No."BUG;               
pro=0;                                                                          
beg=1;                                                                          
}                                                                              
}  

效果有什么不一样吗?上面的一个不OK,下面一个就OK

论坛徽章:
0
2 [报告]
发表于 2006-09-20 15:16 |只看该作者
如果你用上面一个的这种写法,你就应该把后面的在这种条件下执行的命令的前一个 { 紧跟在条件pro==1 && /END IF/后面,这样shell才把这看成一个if .......... then 关系。

论坛徽章:
0
3 [报告]
发表于 2006-09-20 15:16 |只看该作者
也就是说下面的写法是可以的:
pro==1 && /END IF/ {                                                                              
print $0;                                                                       
print "   CALL cl_used(g_prog,l_time,1) RETURNING l_time No."BUG;               
pro=0;                                                                          
beg=1;                                                                          
}

论坛徽章:
0
4 [报告]
发表于 2006-09-20 17:35 |只看该作者
按照楼上说的,我试了一下,可是为什么呀

怎么会有这样的差别呢

可否解释一下
pro==1 && /END IF/{
command1;
command2;
....
}

pro==1 && /END IF/
{
command1;
command2;
.....
}
会有这样的差别呀

不解中
谢谢

论坛徽章:
0
5 [报告]
发表于 2006-09-20 17:36 |只看该作者
是不是awk把它解释成两个完全没有关系的内容了?

论坛徽章:
0
6 [报告]
发表于 2006-09-20 17:40 |只看该作者
哎..想想也对,
因为awk pattern/command 可以不必全写
所以上面的语句被解释成了

pro==1 && /END IF/{print $0} #满足是时,print $0

#任何一行,执行下面的command
{
command1;
command2;
.....
}

JasonSei:是不是这样解释

论坛徽章:
0
7 [报告]
发表于 2006-09-20 17:50 |只看该作者
对的
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP