Chinaunix首页 | 论坛 | 博客
  • 博客访问: 459528
  • 博文数量: 118
  • 博客积分: 4015
  • 博客等级: 上校
  • 技术积分: 1233
  • 用 户 组: 普通用户
  • 注册时间: 2010-11-24 22:11
文章分类

全部博文(118)

文章存档

2013年(5)

2011年(61)

2010年(52)

分类:

2010-12-03 16:11:48

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

        }while(defined($line) && $line !~ /color="000000"/);
        #now the file has ended or get the record;
        if(defined($line)){
             $line =~ /.*>(\d+)
             print "$1\t";

             $line = ;
             $line =~ /.*(\d+)<.*/;
             print "$1\t";

             my $i = 0;
             for($i = 0; $i < 7; $i++){
                 $line = ;
                 $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
阅读(2455) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~