Se você tem o GNU awk, você pode usar uma versão mutlidimensional do canônico NR==FNR {a[$1]=$2; next} $NF in a {print $0, a[$NF]}
com as seguintes modificações:
-
você não pode usar o truque
NR==FNR
para decidir se está criando ou usando a tabela de pesquisa; você precisará contar quantos arquivos foram processados -
você precisará fazer um loop explicitamente sobre o índice primário e testar a chave de correspondência em cada subarray
Ex.
gawk '
BEGINFILE{k++}
k<3 {a[k][$1]=$2; next}
{nf = NF; for (l in a) {if ($nf in a[l]) {$(NF+1) = a[l][$nf]}}}
{print}
' TABLE1.txt TABLE2.txt INPUT.txt
63 M 27 BS/BA TEHRANI 3 4 298320 310050 11730 j j feat1 sp1
63 M 27 BS/BA TEHRANI 3 4 310050 311430 1380 ( a feat2 sp2
63 M 27 BS/BA TEHRANI 3 4 311430 312080 650 ] ]
Se você quiser cabeçalhos de coluna, imprima-os em uma regra BEGIN
.