Пожалуйста, помогите.Perl, выделить конкретные столбцы
У меня есть два файла (file1 и file2). Я хотел бы извлечь столбцы из файла2, которые имеют свои идентификаторы, перечисленные в файле1. Это большие файлы с тысячами столбцов и строк.
file1
Id123B
Id124A
Id125A
file2
Code sex id123B id127 id125A
желаемого выходного файла:
code sex id123B id125A
Ниже приведен код, который я попробовал, но ничего не получается.
!/usr/bin/perl
use strict;
use warnings;
open my $IN, "file2" or die $!;
my $header = <$IN>;
my %sampleID = map { /(.*?)\t/; $1 => 1 } <$IN>;
close($IN);
open $IN, "file1" or die $!;
$header = <$IN>;
my @samples = split /\t/, $header;
my @cols = grep { exists $sampleID{$samples[$_]} } 0..$#samples;
while(<$IN>){
chomp;
my @line = (split /\t/)[@cols];
print join("\t", @line), "\n";
}
Большое спасибо за помощь. Я просто запускал его и не печатал какой-либо вывод. Возможно, формат данных? –
@ El.h Возможно, это работает для меня. Проверьте имена столбцов. – choroba