Perl读取特定行
VCS编译会产生log文件,包含了Error、Warning和lint信息,特别是warning和lint的数量比较多,直接在Lint中查找比较麻烦,并且还存在大量我们不关系的Lint信息,此时可以通过Perl将我们关心的包含了Error、Warning和lint信息提取出来,进行查看会方便很多。DC综合都会产生很多log文件,使用Perl提取特定行也会很方便。
1.提取包含关键词的一行
Perl提取特定行具有两种方式:
方法1
:每次读取原文件的一行,依次处理
特点
:占用内存空间小,适用于大文件
方法2
:一开始读取原文件所有内容,再按行依次处理:
特点
:占用内存空间大,适用于小文件
方法1:每次读取一行
#!/usr/bin/perl -w
use strict ;
my $eachline ;
my $result;
open (INFILE, "crm.log"); #提取crm.log文件内容
while ($eachline=<INFILE>) {
if ($eachline =~ m/(Error:)|(Warning)/){ #匹配关键词
print $eachline."\n";
$result = $result . $eachline ."\n"; #将匹配行保存在result中
close(INFILE);
open(OUTFILE, ">report.log");
print OUTFILE ($result); #将result写入到report.log中
方法2:一次读取原文件所有数据
#!/usr/bin/perl
use strict ;
my @array ;
my $string ;
my $result ;
open (INFILE, "crm.log");
@array = <INFILE> ;
foreach $string (@array){
if ($string =~ m/(Error:)|(Warning)/){
print $string."\n";
$result = $result . $string ."\n";
close(INFILE);
open(OUTFILE, ">outfile");
print OUTFILE ($result);
2.获取匹配行后面的多行
每行含有Error或者Warning则匹配成功,将匹配行在内的连续三行打印并写入文件report.log
#!/usr/bin/perl -w
use strict ;
my $eachline ;
my $result;
my $line_cnt=0;
open (INFILE, "crm.log");
while ($eachline=<INFILE>) {
if ($eachline =~ m/(Error)|(Warning)/){ #匹配 Error或者Warning
$line_cnt = 0;
print $eachline."\n";
$result = $result . $eachline ."\n";
} elsif($line_cnt<3) { # 匹配成功后的连续三行写入report.log,并打印
$line_cnt++ ;
print $eachline."\n";
$result = $result . $eachline ."\n";
close(INFILE);
open(OUTFILE, ">report.log");
print OUTFILE ($result);
3.脚本的使用
-
复制三个代码中一个代码,保存到extract.pl文件中
-
将extract.pl放置在Linux环境中的一个目录下:
-
准备好crm.log文件放在同一个目录下
-
在terminal终端中设置执行权限: chmod a+x extract
-
在terminal终端中执行命令:extract
-
最后得到report.log文件,其中包含crm.log文件相应的Error和Warning信息
Perl读取特定行VCS编译会产生log文件,包含了Error、Warning和lint信息,特别是warning和lint的数量比较多,直接在Lint中查找比较麻烦,并且还存在大量我们不关系的Lint信息,此时可以通过Perl将我们关心的包含了Error、Warning和lint信息提取出来,进行查看会方便很多。DC综合都会产生很多log文件,使用Perl提取特定行也会很方便。1.提取包...
转载地址:http://blog.csdn.net/omohe/art
ic
le/details/1562515
使用
Perl
从文件
中
读取字符串,一般有两种方法:
1. 一次性将文件
中
的所有内容读入一个数组
中
(该方法适合小文件):
open(FILE,"filename")||die"can not open the file: $!";
@filelist=FILE>;
本文转载于 http://blog.sina.com.cn/s/blog_55cbb3d10100pfjl.html
字符串
提取
是个麻烦有需要耐心的工作,如果针对一个文件,可以利用正则表达式
提取
某些字符串,如果你有成百上千个文件,则需考虑循环或文件夹操作,下面的代码介绍了如何
提取
一个文件夹(含子目录)
中
较多文件里的某一固定字符串。
$searchdir="c:/folder";
本文内容包括:
Perl
的多进程自动化测试场景介绍
应用
Perl
多进程技术到自动化测试脚本小结参考资料在IT产品系统测试的自动化项目
中
,经常有并
行
处理多个子任务的需求,为了提高测试效率,就需要用到多进程或者多线程编程。文章介绍了
Perl
多进程的用法和适用场景,以及
Perl
多进程和多线程的关系。同时结合企业级IT产品系统测试的自动化特点,介绍了
Perl
多进程在这方面的
应用
。
Perl
的多进程
Perl
的多进程
Perl
语言是一种非常强大的脚本语言,其广泛
应用
于系统维护,CGI(CommonGatewayInterface)编程,数据库编程和自动化测试
中
。多任务和并发处理一度被看作是判定优异操作系统的一个特
Perl
定时启动EDA工具
在
IC
设计
中
,很多EDA工具使用具有前后关系,比如进
行
形式验证,比较Verilog代码和综合网表的一致性,就需要准备好网表.vg文件才能启动形式验证操作。而网表会在下班1个小时后才能产生。此时为了能够尽早启动形式验证,我们可以使用
Perl
脚本定时启动形式验证。
1、脚本原理
采用sleep进
行
等待,等待1个小时,使用system启动形式验证命令(本案例
中
,假设在l...
这个错误提示意味着你正在尝试安装一个
Perl
脚本,但是系统
中
没有安装必需的
Perl
模块
perl
-Getopt-Long。
要解决这个问题,你需要使用系统的包管理器(如 apt、yum 等)安装
perl
-Getopt-Long 模块。具体命令可能因系统不同而有所不同,下面是几个可能的命令:
- CentOS / RHEL: `sudo yum install
perl
-Getopt-Long`
- Ubuntu / Debian: `sudo apt-get install libgetopt-long-
perl
`
- macOS(使用 Homebrew): `brew install
perl
-getopt-long`
安装完成后,你可以重新执
行
Perl
脚本,应该就可以运
行
了。