如何用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的不变,全部输出到文件。
展开
 我来答
连续用6a43aa2
2018-04-20 · TA获得超过3747个赞
知道大有可为答主
回答量:7283
采纳率:72%
帮助的人:611万
展开全部
#!/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;
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式