我有.txt
文件与3列。我想比较第一列和第二列,如果第一列中的值出现在第二列中,我想删除第二列和第三列中的那个条目(不应修改第一列)。结果应该存储在一个新文件中。比较阵列值与散列和删除键,如果它匹配在一个文件
示例输入:
Col 1 Col 2 Col 3
VIBHAR_02293_1 VIBHAR_00819_2 tatatattattata
VIBHAR_00819_2 VIBHAR_00819_4 tattavgaggagag
VIBHAR_00705_3 VIBHAR_00705_7 attaggaccaggat
VIBHAR_00819_4 VIBHAR_02153_9 ccagggattattat
输出示例:
VIBHAR_02293_1 VIBHAR_00705_7 attaggaccaggat
VIBHAR_00819_2 VIBHAR_02153_9 ccagggattattat
VIBHAR_00705_3
VIBHAR_00819_4
我使用以下代码尝试,但它不工作:
while($line=(<File>))
{
chomp($line);
@F=split('\t',$line);
$hash{$F[1]}=$F[2];
if ($F[0] eq $F[1])
{
# print "$line\n";
delete($hash{keys});
}
}
如果列的格式,我张贴上面是不好的,只有我的问题就足够了,我猜。
请不要泄露。 – SLaks
你的换挡钥匙似乎有它自己的生活。 –
我试着让你的例子正面或反面,直到我意识到第一列是完全独立的。似乎没有理由将它全部保存在一个文件中。如果将它们分成两个文件,很容易。如果你坚持保留一个文件,那么两遍aporoach似乎很自然;在第一遍中,读取第一列,并在第二遍中读取另外两个,丢弃在第一遍中也看到关键字段的任何条目。 – tripleee