我遇到了一件很简单的事情。我需要比较两个文件,并只写出两者之间不匹配的模式。使用perl编写两个文件之间不匹配的元素
我的第一个文件是这样的:
1 A A
2 A B
3 C D
4 E F
5 G H
6 I L
我的第二个文件是这样的:
A A
A B
C D
我想要什么是使用对列表中的第二个文件,选择不匹配第一个文件中的行并将其输出到输出中。我想要的输出如下所示:
4 E F
5 G H
6 I L
我的代码如下需要改进,我需要您的帮助来做到这一点!
open (FUS, "< $file_1")|| die "Impossible open file 1";
@f = <FUS>;
close (FUS);
open (ALL, "< $file_2")|| die "Impossible open file 2";
@a = <ALL>;
close (ALL);
for ($c=0; $c<=$#a; $c++) {
chomp ($a[$c]);
@q = split (/\t/, $a[$c]);
$qok = $q[0]."\t".$q[1];
$qko = $q[1]."\t".$q[0];
for ($t=0; $t<=$#f; $t++) {
chomp ($f[$t]);
($id, $pf1, $pf2) = split (/\t/, $f[$t]);
$pf_12 = $pf1."\t".$pf2;
$pf_21 = $pf2."\t".$pf1;
if ((($qok ne $pf_12) && ($qko ne $pf_12)) || (($qok ne $pf_21) && ($ko ne $pf_21))){
print "$id\t$pf1\t$pf2\n";
}
}
}
该代码的问题是循环中的问题,使我得到一个错误的结果,而不是所需的。
任何建议都非常欢迎!
'grep -v -f file1 file2'或者类似的东西?哦,我的天哪,你的变数名称令人困惑。你怎么忍受它? '$ qok $ qko $ c $ q $ pf1 $ pf2 $ pf_12 $ pf_21' ... – TLP