免费注册 查看新帖 |

Chinaunix

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

字符不明原因的变化导致模式匹配失败 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2014-04-08 13:55 |只看该作者 |倒序浏览
这是代码:

while (my $sum_line = <SUMMARY>)
{
        chomp($sum_line);
        if ($sum_line =~ /\w+-\w+-\d+/)
        {
print "the 1st matched line: $sum_line\n";
use re "debug";
                if ($sum_line =~ /(\w+-\w+-\d+).+STATUS\s-\s(\d+)\sred,\s(\d+)/)
                {
print "the matched line: $sum_line\n";
                        if ($2 != 0)


这是输出:

the 1st matched line: n7mw-e-951 |                 | TiMOS-C-9.0.R11        | STATUS - 0 red, 0 amber
Guessing start of match in sv for REx "(\w+-\w+-\d+).+STATUS\s-\s(\d+)\sred,\s(\d+)" against "n7mw-e-951 |                 | TiMOS-C-9.0.R11        |%33[5"...
Found floating substr "STATUS" at offset 63...
start_shift: 6 check_at: 63 s: 0 endpos: 58

问题出在红色的字符上,为什么字符会变成这个特殊字符? 导致匹配失败。

求职 : 软件工程师
论坛徽章:
3
程序设计版块每日发帖之星
日期:2015-10-07 06:20:00程序设计版块每日发帖之星
日期:2015-12-13 06:20:00程序设计版块每日发帖之星
日期:2016-05-05 06:20:00
2 [报告]
发表于 2014-04-08 15:59 |只看该作者
原始文件编码不对,估计混了进去全角的中文符号

论坛徽章:
0
3 [报告]
发表于 2014-04-10 13:59 |只看该作者
找到原因了,里面确实有特殊符号. 该文件是这样写入的:
printf SUMMARY "%-13s|%-17s|%-24s|%-11s\n", $host,"      "," $sw_ver",colored ["blink $overall_color"]," $overall_state",colored ['reset']," - $Red_num red, $Amb_num amber";
就是这些color和blink导致的。
谢谢楼上的回复。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP