本文描述了一种使用Perl编程语言处理仿真log文件的方法,针对以m_out_scb.mon[数字]:开头的行,替换中括号中的数字并按0~85的循环进行处理。作者分享了log_process.pl脚本,展示了基本的文件读取、正则匹配和替换功能。
摘要由CSDN通过智能技术生成
本来log中的这个内容也是UVM环境中打印的,但是没有权限修改那个打印文件。只能处理Log文件了
读入log文件,在以“m_out_scb.mon[数字]:”开头的行中替换中括号[]中的数字。
run.log
m_out_scb.mon[0]:其他内容
m_out_scb.mon[10]:其他内容
m_out_scb.mon[899]:其他内容
中括号中的数字最大值根据仿真数据量来定,上不封顶。
数字的处理:例如0~89处理为0~85一个循环,0~85,0,1,2,3
1,把文件读入
2,匹配到指定行
3,提取中括号中的数字
4,数字替换为处理后的数字
很久不用perl了,这个功能实现很基础,还是花了些时间,所以记录下来,以后方便参考。
log_process.pl
#!/usr/bin/perl
open my $fh_in,"<","run.log" or die $! //在当前路径打开run.log作为输入文件,传给fh_in文件句柄
open my $fh_out,">","processed_run.log" or die $! //在当前路径用processed_run.log来保存处理后的数据
while(<
Perl
读取特定
行
VCS编译会产生log
文件
,
包含
了Error、Warning和lint信息,特别是warning和lint的数量比较多,直接在Lint中查找比较麻烦,
并
且还存在大量我们不关系的Lint信息,此时可以通过
Perl
将我们关心的
包含
了Error、Warning和lint信息
提取
出来,进
行
查看会方便很多。DC综合都会产生很多log
文件
,使用
Perl
提取
特定
行
也会很方便。
1.
提取
包...
##################################################################
# shao.bing take off dial_prefix+prefix_dial from $CLphone_number
###############################
本人是
Perl
语言
初学者,仅仅是读完
Perl
语言
入门
(
第四版
)
.pdf,工作中写过几个小脚本。
感觉
Perl
语言
处理文本任务确实很强大,准备写些个笔记用于知识积累。
最近工作中需要更新很多个
文件
,每个
文件
只需要更新字符串资源的字符串 id ,
文件
是 xml 格式的(
Perl
有强大的xml处理能力,这里直接当成文本
文件
处理了)。
基本上就是用新的id更新掉老的id,但是其他内容都是保
CSDN-Ada助手:
Perl-提取文件中指定行的数字,并完成替换(包含代码注释)
CSDN-Ada助手:
UVM中package的使用
CSDN-Ada助手:
如果想系统学习 ABAP,请使用笔者另一套教程《零基础快速学习 ABAP》。
本教程是笔者 17 年使用 ABAP 中积累的零散知识点,没有系统整理过,请大家根据实际需要决定是否订阅。
为避免有些人恶意搬运文章,象征性设置成付费专栏。
现代 ABAP 编程语言
中
的正则表达式