【发布时间】:2014-07-26 03:05:52
【问题描述】:
对于我正在尝试编写的一个看似简单的脚本,我想请你帮忙。
基本上我想比较两个制表符分隔文件的每个字段。 如果文件的第二个字段匹配 --> 比较该行的所有其余字段。
如果第一个文件的字段为“NA”,则打印相同位置的第二个文件的字段。
现在我已经编写了这个小脚本,但我遇到的问题之一是:
1-如何保留第一个文件中前9个字段的第一个字段
2- 如何告诉 Perl 从第二个文件中打印出带有更改字段的行。
如果我不清楚,这里是一个例子:
文件 1:
16 50763778 x GCCC GCCCC 210.38 PASS AC1=1 GT NA NA 0/1
文件2:
16 50763778 x GCCC GCCCC 210.38 PASS AC1=1 GT 0/1 1/1 0/1
所需的制表符分隔输出:
16 50763778 x GCCC GCCCC 210.38 PASS AC1=1 GT 0/1 1/1 0/1
提前感谢您的任何评论和帮助!
use strict;
use warnings;
my $frameshift_file = <>;
my $monomorphic_file = <>;
my @split_file1 = split "\t", $frameshift_file; #splits the file on tabs
my @split_file2 = split "\t", $monomorphic_file; #splits line on tab delimeted fields
if ($split_file1[1] eq $split_file2[1] {
for (my $i=0; $i<scalar(@split_file1); $i++) {
if ($split_file1[$i] eq "NA") {
print $split_file2[$i],"\t";
} else { print $split_file1[$i],"\t";
}
}
}
【问题讨论】:
标签: perl