solução awk
Que tal isso. Não fornece a saída exata que você oferece, mas não tenho certeza de por que d SORCY
seria impresso como d
is MSTRG3.1
, que é COTJA
.
De qualquer forma, aqui vai. Starter-for-dez. Funciona bem no GNU Awk v4.0.2.
$ awk 'NR==FNR{a[$1]=$2}NR!=FNR&&FNR>1&&a[$3]{print $1,a[$3]}' file2 file1
a ALLMI
d COTJA
$
Se NR for igual a FNR, estaremos no primeiro arquivo, então preencha o array.
Se NR não é o mesmo que FNR, estamos no 2º arquivo, então uma vez que passamos do primeiro registro deste arquivo (cabeçalho), e se o campo 3 existe no array, imprima-o. / p>
solução awk "golfada"
Código menos legível, mas mais curto.
awk 'NR==FNR{a[$1]=$2}a[$3]{print$1,a[$3]}' file{2,1}
associa a solução
Como alternativa, se você não for específico em relação à necessidade de usar awk
, use apenas join
.
$ join -1 3 -2 1 -o "1.1 2.2" file1 file2
a ALLMI
d COTJA
$
Junte os arquivos usando o campo 3 do arquivo 1 ( -1 3
) e o campo 1 do arquivo 2 ( -2 1
). Em seguida, imprima o campo 1 do arquivo1 e o campo2 do arquivo2. Bingo.