AWK: extraer líneas si la columna en el archivo 1 cae dentro de un rango declarado en dos columnas en otro archivo

Actualmente estoy luchando con un problema de AWK que aún no he podido resolver. Tengo un archivo enorme (30 GB) con datos genómicos que contiene una lista con posiciones (declaradas en col 1 y 2) y una segunda lista que contiene varios rangos (declarados en col 3, 4 y 5). Quiero extraer todas las líneas en el primer archivo donde la posición cae dentro del rango declarado en el archivo de segundos. Como la posición solo es única dentro de un cierto cromosoma (chr), primero debe probarse si los chr son idénticos (es decir, col1 en el archivo 1 coincide con col3 en el archivo2)

archivo 1

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

archivo 2

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

Rendimiento esperado

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

Un resumen de lo que pretendo hacer (medio 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
   }
}

Me gusta si entiendo cómo resolver este problema colocando el archivo1 en una matriz y usando la posición como índice, pero todavía tengo un problema con el chr y, además, ese archivo1 es demasiado grande para colocarlo en una matriz (aunque tengo 128 GB de RAM). He intentado algunas cosas con matrices multidimensionales, pero tampoco pude entender cómo hacerlo.

Muchas gracias por toda su ayuda.

Actualización 8/5/14 Se agregó una tercera línea en el archivo 2 que contiene otro rango en el mismo cromo. como en la segunda línea. Esta línea se omite en el script a continuación.

Respuestas a la pregunta(2)

Su respuesta a la pregunta