如何用Perl写个程序(或其他语言),判断FILE1第一列是Un,且第二列在FILE2的二三列间,用1的二减2的4
FILE1:NC_1125.ANC_2657.CUn147.GUn321.AFILE2:NW_112000NW_2201300500NW_33018001000判断FIL...
FILE1:
NC_1 125 . A
NC_2 657 . C
Un 147 . G
Un 321 . A
FILE2:
NW_1 1 200 0
NW_2 201 300 500
NW_3 301 800 1000
判断FILE1中第一列是Un,第二列在FILE2中的哪个区域,对应的把这一行的Un换成FILE2中对应行的NW,并把对应的FILE1的第二列减去FILE2的第四列,不是Un的不变,全部输出到文件。 展开
NC_1 125 . A
NC_2 657 . C
Un 147 . G
Un 321 . A
FILE2:
NW_1 1 200 0
NW_2 201 300 500
NW_3 301 800 1000
判断FILE1中第一列是Un,第二列在FILE2中的哪个区域,对应的把这一行的Un换成FILE2中对应行的NW,并把对应的FILE1的第二列减去FILE2的第四列,不是Un的不变,全部输出到文件。 展开
1个回答
展开全部
#!/usr/bin/perl
my $a = << 'ATXT';
NC_1 125 . A
NC_2 657 . C
Un 147 . G
Un 321 . A
ATXT
my $b = << 'BTXT';
NW_1 1 200 0
NW_2 201 300 500
NW_3 301 800 1000
BTXT
open CCC,"> d:/c.txt";
my @a = split(/\n/,$a);
my @b = split(/\n/,$b);
foreach $c (@a){
undef $m;
if($c =~/^Un\s+(\d+).*/){
$m = $1;
foreach $d (@b){
my @e = split(/\s+/,$d);
if($m > $e[1] && $m < $e[2]){
my $f = $m - $e[3];
print CCC "$e[0] $f\n";
print "$e[0] $f\n";
}
}
}else{
print CCC "$c\n";
print "$c\n";
}
}
close CCC;
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询