Я хотел бы объединить два файла на основе соответствующей строки между двумя файлами. в File1 строка найдена в колонке 4 и в Файл2 строка найдена между символами ":" и "-"Объедините два файла, основанные на общей строке
File1:
chr1 Rfam ncRNA 157784 157887 66.91 - . ID=RF00026.1;Name=RF00026;Alias=U6;Note=AL627309.15/147374-147271
chr1 Rfam ncRNA 564813 564881 36.11 + . ID=RF00005.1;Name=RF00005;Alias=tRNA;Note=AC114498.2/43445-43513
chr1 Rfam ncRNA 564879 564950 32.30 - . ID=RF00005.2;Name=RF00005;Alias=tRNA;Note=AC114498.2/43582-43511
chr1 Rfam ncRNA 564952 565019 28.17 + . ID=RF00005.3;Name=RF00005;Alias=tRNA;Note=AC114498.2/43584-43651
chr1 Rfam ncRNA 566062 566129 31.36 + . ID=RF00005.4;Name=RF00005;Alias=tRNA;Note=AC114498.2/44694-44761
chr1 Rfam ncRNA 566137 566205 30.82 - . ID=RF00005.5;Name=RF00005;Alias=tRNA;Note=AC114498.2/44837-44769
chr1 Rfam ncRNA 566207 566279 35.81 - . ID=RF00005.6;Name=RF00005;Alias=tRNA;Note=AC114498.2/44911-44839
chr1 Rfam ncRNA 566311 566376 26.05 - . ID=RF00005.7;Name=RF00005;Alias=tRNA;Note=AC114498.2/45008-44943
File2:
chr1:157783-157887 aaaaatatggaatgcttcacaaatttgcatgtcattctttcacagaggccgtgccaatctctctattgttccaacttaagtatgtgtgctactgaggcaagcaT
chr1:564812-564881 AGAAATATGTCTGATAAAAGAGTTACTTTGATAGAGTAAATAATAGGAGTTTAAATCCCCTTATTTcta
chr1:564878-564950 ctaggactatgagaatcgaacccatccctgagaatccaaaattctccgtgccacctatcacaccccatccta
chr1:564951-565019 AGTAAGGTCAGCTAAATAAGCTATCGGGCCCATACCCCGAAAATGTTGGTTATATCCTTCCCGTACTA
chr1:566061-566129 AGAAATTTAGGTTAAATACAGACCAAGAGCCTTCAAAGCCCTCAGTAAGTTGCAATACTTAATTTCTG
chr1:566136-566205 TAAGGACTGCAAAACCCCACTCTGCATCAACTGAACGCAAATCAGCCACTTTAATTAAGCTAAGCCCTT
chr1:566206-566279 CTAGACCAATGGGACTTAAACCCACAAACACTTAGTTAACAGCTAAGCACCCTAATCAACTGGCTTCAATCTA
chr1:566310-566376 AAGCCCCGGCAGGTTTGAAGCTGCTTCTTCGAATTTGCAATTCAATATGAAAATCACCTCAGAGCT
chr1:566376-566441 GGTAAAAAGAGGCTTAACCCCTGTCTTTAGATTTACAGTCCAATGCTTCACTCAGCCATTTTACC
chr1:568068-568136 AAGATATTAGAAAAACCATTTCATAACTTTGTCAAAGTTAAATTATAGGCTAAATCCTATATATCTTA
chr1:568843-568913 CACTGTAAAGCTAACTTAGCATTAACCTTTTAAGTTAAAGATTAAGAGAACCAACACCTCTTTACAGTGA
Выход:
Выход должен содержать все столбцы из обоих файлов.
chr1 Rfam ncRNA 157784 157887 66.91 - . ID=RF00026.1;Name=RF00026;Alias=U6;Note=AL627309.15/147374-147271 chr1:157783-157887 aaaaatatggaatgcttcacaaatttgcatgtcattctttcacagaggccgtgccaatctctctattgttccaacttaagtatgtgtgctactgaggcaagcaT
....
....
Я написал этот код на аналогичный, но не идентичной задачи перед:
#!/usr/bin/perl
use strict;
use warnings;
my @files = qw| input.log input1.log |; #you can give here path of files, or use @ARGV if you wish to pass files from command line
my %data;
foreach my $filename (@files)
{
open my $fh, '<', $filename or die "Cannot open $filename for reading: $!";
while (my $line = <$fh>)
{
chomp $line;
my ($col1, $col2) = split /\s+/, $line;
push @{ $data{$col1} }, $col2; #create an hash of array
}
}
foreach my $col1 (sort keys %data)
{
print join("\t", $col1, @{ $data{$col1} }), "\n";
}
созданными Вы работали над проблемой и застряли? – simbabque
Где код? – serenesat
Что мешает вам использовать вашу существующую программу? Как все иначе? Кроме того, насколько велики два файла? Могут ли они храниться в памяти или мы говорим о GBs текстовых файлов? – simbabque