在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 2606|回复: 3

[原创] 请教perl的匹配多行

[复制链接]
发表于 2013-11-26 19:46:01 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
[size=11.818181991577148px]
请教perl中如何摘取有某个关键词的段落,段落之间有空行,格式如下,比如删除所有有regfile.v的段落
代码没起作用,请教如何改正?

代码:

for my $file (@ARGV) {

   my $content;


   open(in, "$file");

   $content .= $_ while <in>;

   close(in);


   if ($content =~ /[^-]*regfile[^-]*/s) {

       print MYFILE "$content";

    }

}




原文:
---------------------------------------------------------------------------------------------------
Type              : Violation
TX File           : uart_conv.v:48
RX File           : regfile.v:2088
ID                : no_sync_23108
---------------------------------------------------------------------------------------------------


---------------------------------------------------------------------------------------------------
Type              : Violation
TX File           : uart_conv.v:48
RX File           : regfile.v:2088
ID                : no_sync_23108
---------------------------------------------------------------------------------------------------

---------------------------------------------------------------------------------------------------
Type              : Violation
TX File           : uart_conv.v:48
RX File           : afifo.v:2099
ID                : no_sync_32446
---------------------------------------------------------------------------------------------------

期望的结果:
Type              : Violation
TX File           : uart_conv.v:48
RX File           :regfile.v:2088
ID                : no_sync_23108

Type              : Violation
TX File           : uart_conv.v:48
RX File           :regfile.v:2088
ID                : no_sync_23108


 楼主| 发表于 2013-11-27 11:39:48 | 显示全部楼层
if ($content =~ s/([^-]*regfile\.v[^-]*)/<$1>/gm) {
       print MYFILE "$1";
    }
}
这个改了之后,发现只有最后一段符合要求的匹配段落被输出,请教如何将所有匹配段落输出?
 楼主| 发表于 2013-11-27 12:12:29 | 显示全部楼层
试出来了,呵呵

    @all_text=$content =~ /([^-]*regfile\.v[^-]*)/g;

    foreach(@all_text)
    {
    print MYFILE $_."\n";
    }
发表于 2013-12-7 15:03:48 | 显示全部楼层
多试试就好了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /2 下一条


小黑屋| 手机版| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-12-18 21:15 , Processed in 0.017030 second(s), 8 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表