AWK: extrair linhas se a coluna no arquivo 1 estiver dentro de um intervalo declarado em duas colunas em outro arquivo

Atualmente, estou tendo um problema com o AWK que ainda não consegui resolver. Eu tenho um arquivo enorme (30 GB) com dados genômicos que contém uma lista com posições (declaradas nas colunas 1 e 2) e uma segunda lista que contém vários intervalos (declarados nas colunas 3, 4 e 5). Eu quero extrair todas as linhas no primeiro arquivo em que a posição esteja dentro do intervalo declarado no arquivo de segundos. Como a posição é única apenas dentro de um determinado cromossomo (chr), primeiro ela deve ser testada se os chr forem idênticos (por exemplo, col1 no arquivo 1 corresponde a col3 no arquivo2)

arquivo 1

chromosome position another....hundred.....columns
chr1       816 .....
chr1       991 .....
chr2       816 .....
chr2       880 .....
chr2       18768 .....
...
chr22      9736286 .....

arquivo 2

name    identifier chromosome   start    end
GENE1   ucsc.86    chr1         800      900
GENE2   ucsc.45    chr2         700      1700
GENE3   ucsc.46    chr2         18000    19000

resultado esperado

chromosome position another....hundred.....columns
chr1       816 .....
chr2       816 .....
chr2       880 .....
chr2       18768 .....

Um verão do que pretendo fazer (meio codificado):

(if $1(in file 1) matches $3(in file 2){            ##test if in the correct chr
   if ($2(in file 1) >= $4 && =< $5 (in file 2){    ##test if pos is in the range
         print $0 (in file 1)                       ##if so print the row from file1
   }
}

Eu meio que entendo como resolver esse problema colocando file1 em uma matriz e usando a posição como índice, mas ainda tenho um problema com o chr e, além disso, o file1 é muito grande para colocar em uma matriz (embora eu tenha 128 GB de RAM). Eu tentei algumas coisas com matrizes multidimensionais, mas também não consegui descobrir como fazer isso.

Muito obrigado por toda sua ajuda.

Atualização 8/5/14 Adicionada uma terceira linha no arquivo 2 que contém outro intervalo no mesmo crom. como na segunda linha. Esta linha é ignorada no script abaixo.

questionAnswers(2)

yourAnswerToTheQuestion