这是一个简单的问题,但找不到任何可行的解决方案。我有 2 个文件,第一个文件包含我感兴趣的所有 ID,例如“tomato”、“cucumber”,还有我不感兴趣的 ID,它们在第二个文件中没有任何价值。第二个文件具有以下数据结构
tomato red
tomato round
tomato sweet
cucumber green
cucumber bitter
cucumber watery
我需要得到一个文件,其中包含具有第二个文件中所有匹配值的所有 ID,所有内容都以制表符分隔,如下所示:
tomato red round sweet
cucumber green bitter watery
到目前为止,我所做的是从第一个文件中的 ID 创建一个散列:
while (<FILE>) {
chomp;
@records = split "\t", $_;
{%hash = map { $records[0] => 1 } @records};
}
这是第二个文件:
while (<FILE2>) {
chomp;
@records2 = split "\t", $_;
$key, $value = $records2[0], $records2[1];
$data{$key} = join("\t", $value);
}
close FILE;
foreach my $key ( keys %data )
{
print OUT "$key\t$data{$key}\n"
if exists $hash{$key}
}
将不胜感激一些简单的解决方案来组合所有匹配相同 ID 的值!:)