接上回,从网上获得了一组文件,然后需要提取信息,考虑到文件的结构比较规则,决定用正则表达式。
当然前期的处理有:把^M去掉,命令如下:
#for a in `ls htmls`; do sed -e 's/^M//g' $a >$a.out; done
注意:^M不是^ M,而是Ctrl+V Ctrl + M
源代码如下:
#!/usr/bin/perl
my $in = $ARGV[0];
my $line = "";
die "NO input file!" if(!defined($in));#没有输入则结束
open(FH,$in) or die "Cannot read $in:$!";#read $in
do{
do {
$line = <FH>;
}while(defined($line) && $line !~ /color="000000"/);
#now the file has ended or get the record;
if(defined($line)){
$line =~ /.*>(\d+)</;
print "$1\t";
$line = <FH>;
$line =~ /.*<strong>(\d+)<.*/;
print "$1\t";
my $i = 0;
for($i = 0; $i < 7; $i++){
$line = <FH>;
$line =~ /.*>(.+)<\/font>/;
print "$1\t";
}
print "\n";
}else{
exit;
}
}while(defined($line));
close(FH);
文件做成输入,需要的信息打印出来,以便在shell中调用重定向到文件中,下面是命令:
#for a in `ls` ; do perl $a>>siRNA.db;done
Perl 程序 文本处理 从文本文件中提取需要的信息
作者: neobilly 发布时间: 2010-12-03