Você poderia tentar algo como:
awk 'NR==FNR{z[$1]?z[$1]=z[$1]"|"$2"|"$3:z[$1]=$2"|"$3;next}
{if ($1 in z){l=split(z[$1], k, "|");
{for (i=1;i<l;i+=2){if ($2>=k[i] && $3<=k[i+1]){print}}}}}' file1 file2
Lê file1
, une os campos 2 e 3 com |
e salva isso em uma matriz z
(indexada pelo primeiro campo), depois lê file2
e verifica se o primeiro campo está em z
- se assim for, ele divide z[1st field]
em |
em k[i]
e, para cada valor ímpar de i
, imprime a linha se o segundo campo >=k[i]
e o terceiro campo <=k[i+1]