perl -we 'open $_, "<", shift or die for my($D, $Q); my $p = -1e9999; my $s = -1e9999; my $x; while (my $q = <$Q>) { chomp($q); my $k = (split " ", $q)[1]; $p <= $k or die "query not sorted"; $p = $k; while ($s < $p and defined(my $d = <$D>)) { (my($l), $x) = (split " ", $d)[2,0]; $s <= $l or die "db not sorted"; $s = $l; } my $z = $p == $s ? $x : "-"; print $q, " ", $z, "\n"; }' file1.db file2.query #### 1190 31277 A > T 1 0 0 - 1190 31607 C > A 0 3 1 - 1190 31629 C > T 0 2 0 - 1190 31789 A > G 1 2 5 zm1829427 1190 31882 A > C 0 4 0 - 1190 31883 T > A 0 4 0 zm445312 1190 31883 T > C 2 2 5 zm445312 1190 32199 C > T 0 1 1 - 1190 32487 T > C 0 1 1 - 1190 32496 A > G 0 3 0 -