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