用户名: 密码: 忘记密码? 注册

Perl 程序 文本处理 从文本文件中提取需要的信息

作者:  时间: 2010-12-03
接上回,从网上获得了一组文件,然后需要提取信息,考虑到文件的结构比较规则,决定用正则表达式。
当然前期的处理有:把^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