<p>您可以使用此<code>awk</code>:</p>
<pre class="lang-sh prettyprint-override"><code>awk 'BEGIN{FS=OFS=","} FNR==NR {if (FNR>1) {chr[++n] = $1; id[n]=$2; r1[n]=$3; r2[n]=$4}; next} {for (i=1; i<=n; ++i) if ($1 == chr[i] && r1[i] > $2 && r2[i] < $3) {$0 = $0 OFS id[i] OFS r1[i] OFS r2[i]; break}} 1' file2 file1
chr1,3073253,3074322,gene_id,"ENSMUSG00000102693.1",gene_type,"TEC",linc1320,3073300,3074300
chr1,3074253,3075322,gene_id,"ENSMUSG00000102693.1",transcript_id,"ENSMUST00000193812.1"
chr1,3077253,3078322,gene_id,"ENSMUSG00000102693.1",transcript_id,"ENSMUST00000193812.1"
chr1,3102916,3103025,gene_id,"ENSMUSG00000064842.1",gene_type,"snRNA"
chr1,3105016,3106025,gene_id,"ENSMUSG00000064842.1",transcript_id,"ENSMUST00000082908.1"
</code></pre>
<p>更具可读性的表格:</p>
<pre class="lang-sh prettyprint-override"><code>awk '
BEGIN { FS = OFS = "," }
FNR == NR {
if (FNR > 1) {
chr[++n] = $1
id[n] = $2
r1[n] = $3
r2[n] = $4
}
next
}
{
for (i=1; i<=n; ++i)
if ($1 == chr[i] && r1[i] > $2 && r2[i] < $3) {
$0 = $0 OFS id[i] OFS r1[i] OFS r2[i]
break
}
} 1' file2 file1
</code></pre>