Coincidencia de cinco columnas en dos files con Awk

Tengo dos files de input.

Archivo1:

s2/80 20 . AT 86 F=5;U=4 s2/20 10 . GT 90 F=5;U=4 s2/90 60 . CG 30 F=5;U=4 

File2:

 s2/90 60 . GG 97 F=5;U=4 s2/80 20 . AA 20 F=5;U=4 s2/15 11 . AA 22 F=5;U=4 s2/90 21 . CC 82 F=5;U=4 s2/20 10 . G . 99 F=5;U=4 s2/80 10 . TG 11 F=5;U=4 s2/90 60 . GT 55 F=5;U=4 

Rendimiento esperado:

 s2/80 20 . AT 86 F=5;U=4 s2/80 20 . AA 20 F=5;U=4 s2/20 10 . GT 90 F=5;U=4 s2/20 10 . G . 99 F=5;U=4 

Lógica: quiero que todas las líneas de File1 y File2 se concatenen en el file de salida: Condiciones: si las columnas 1, 2, 4 de File1 y File2 coinciden exactamente y si la columna 5 de File2 tiene un punto, es decir "." o si coincide exactamente con la columna 4 del file2.

Código: intenté usar el script:

 BEGIN{} FNR==NR{ k=$1" "$2 a[k]=$4" "$5 b[k]=$0 c[k]=$4 d[k]=$5 next } { k=$1" "$2 lc=c[k] ld=d[k] # file1 file2 if ((k in a) && ($4==$5) && (lc==$4)) print b[k]" "$0 } 

Pero obtengo una Salida de:

 s2/80 20 . AT 86 F=5;U=4 s2/80 20 . AA 20 F=5;U=4 

Mientras que mi salida debería ser:

 s2/80 20 . AT 86 F=5;U=4 s2/80 20 . AA 20 F=5;U=4 s2/20 10 . GT 90 F=5;U=4 s2/20 10 . G . 99 F=5;U=4 

Apreciaría tu ayuda. Gracias.

Solutions Collecting From Web of "Coincidencia de cinco columnas en dos files con Awk"

 awk ' { key = $1 SUBSEP $2 SUBSEP $4 } # here, we are reading file1 NR == FNR { f1_line[key] = $0 next } # here, we are reading file2 key in f1_line && ($5 == "." || $5 == $4) { print f1_line[key], $0 } ' file1 file2 

salidas

 s2/80 20 . AT 86 F=5;U=4 s2/80 20 . AA 20 F=5;U=4 s2/20 10 . GT 90 F=5;U=4 s2/20 10 . G . 99 F=5;U=4