BEGIN { OFS="\t" } # Pass 1: Load Method A BED (gene body window) FILENAME == methodA { key = $1 "," $2 "," $3 geneA[key] = $4 next } # Pass 2: Load Method B BED (nearest TSS) FILENAME == methodB { key = $1 "," $2 "," $3 geneB[key] = $4 distB[key] = $5 next } # Pass 3: Annotate OCR_allTissue.txt FILENAME == mainfile { if (FNR == 1) { print $0, "Gene_bodyWindow_1Mb", "Nearest_TSS_1Mb", "Dist_to_TSS" } else { key = $1 gA = (key in geneA) ? geneA[key] : "." gB = (key in geneB) ? geneB[key] : "." dB = (key in distB) ? distB[key] : "." print $0, gA, gB, dB } }