use strict; use warnings; my $file1=<<EOF; 23 SNP_A-4293670 0 2713391 24 SNP_A-4293670 0 2713391 25 SNP_A-1780270 0 1111111 26 SNP_A-1780271 0 2222222 EOF my $file2=<<EOF; SNP_A-1780270 ss75925050 rs987435 SNP_A-1780271 ss75925050 rs000001 SNP_A-4293670 ss75925050 rs999999 SNP_A-4293670 ss75925050 xxxxxxxx EOF my %lookup; foreach my $line ( split( /\n/, $file2) ){ my @line=split(/\s+/,$line); $lookup{$line[0]}=$line[2]; } print "k=$_,v=$lookup{$_}\n" for keys %lookup; foreach my $line ( split( /\n/, $file1) ){ my @line=split(/\s+/,$line); printf "%s\t%s\t%s\t%s\n", $line[0], $lookup{$line[1]}, $line[2], +$line[3]; }
result
first column of the seconde file is the problem. Is it unique key?23 xxxxxxxx 0 2713391 24 xxxxxxxx 0 2713391 25 rs987435 0 1111111 26 rs000001 0 2222222
In reply to Re: Replace data in the column of one file with corresponding ones in another file
by remiah
in thread Replace data in the column of one file with corresponding ones in another file
by Renyulb28
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |