Parece que o comando join
só pode ingressar em um campo [ 1 , 2 ], então:
awk '
BEGIN {FS=OFS="\t"}
NR==FNR {a[$1 FS $3] = $2 FS $4; next}
$1 FS $2 in a {print a[$1 FS $2], $3}
' a.tsv b.tsv
Atualização devido ao comentário: como a chave fornecida não é única, aqui está uma técnica para criar várias entradas de "a.tsv"
awk '
BEGIN {FS=OFS="\t"}
NR==FNR {
key = $1 FS $3
if (key in a)
a[key] = a[key] "\n" $2 FS $4
else
a[key] = $2 FS $4
next
}
$1 FS $2 in a {
split(a[$1 FS $2], ary, /\n/)
for (idx in ary)
print ary[idx], $3
}
' a.tsv b.tsv