本帖最后由 reyleon 于 2016-06-28 11:15 编辑
跟 @blackold @关阴月飞 讨论与测试, 哥又涨姿势了, , 之前的编辑删了, 感觉全是错的
结论就是: 正则表达式匹配结果与任何东西做字符串连接操作, 结果永远为真.
①awk '/2/1{print}' a
pattern 为: /2/1, 正则表达式匹配结果返回布尔值, 要么真(True), 要么假(False), 结果与1结合, 是做的字符串连接操作, 所以pattern结果是字符串, 非空的字符串pattern为真, pattern永远为真.
②awk '/2/,/2/0' a 第一个pattern匹配成功时为真, 第二个pattern永远为真.
③awk '/2/,/2/1' a 第一个pattern匹配成功时为真, 第二个pattern永远为真.
④awk '/2/,0' a 第一个pattern匹配成功时为真, 第二个pattern为数字0, 永远为假.
⑤awk '/2/,1' a 第一个pattern匹配成功时为真, 第二个pattern为数字1, 永远为真.
⑥awk '/2/,/2/' a 第一个pattern匹配成功时为真, 第二个pattern匹配成功时为真.
而模式范围匹配操作流程时:
if pattren1 is True:
turned = "on" # 首先以pattern1匹配记录, 为真时, 将开关打开.
if turned == "on":
执行action # 然后逻辑内部再检测开关状态, 如果开关为打开状态, 就执行后面的动作
if pattren2 is True:
turned == "off" #再以pattern2匹配记录, 为真时,将开关关闭
|