awk не может печатать элемент массива

Давайте рассмотрим мой файл1:

ASBQ 

file2:

 B 2 

Я хочу сопоставить $ 1 из файла2 с файлом 1 $ 1 и напечатать файл1 $ 2 && file2 $ 2 для вывода следующим образом:

 Q 2 

Мое решение awk :

 awk 'NR==FNR {a[$1]=$1$2;next} $1 in a {print $2, a[$2]}' file2 file1 

И это дает мне только Q – он не печатает второй элемент массива.
Как я могу напечатать элемент массива?

редактировать

Я обновил свой вопрос, поскольку ответ, который работает для фиктивного примера, не работает с моими фактическими данными.

 f1 chr2 47558199 ENSG00000236824.1 chr2 47558199 ENSG00000236824.1 chr2 47558199 ENSG00000236824.1 f2 ENSG00000236824.1 AAAAAAA 

Я хочу сопоставить f2 $1 с f1 $3 и напечатать f1 $0 плюс f2 $2

Я попробовал этот ответ awk 'NR==FNR {a[$1]=$2;next} $3 in a {print $0, a[$1]}' f2 f1 ,
но все еще не получаю вывод, который я хочу.

awk code выше получает меня только это:

 chr2 47558199 ENSG00000236824.1 chr2 47558199 ENSG00000236824.1 chr2 47558199 ENSG00000236824.1 

Ты был почти там. Просто измените индекс массива на $ 1 – это общий элемент обоих файлов:

 awk 'NR==FNR {a[$1]=$2;next} $1 in a {print $2, a[$1]}' file2 file1 

И не знаю, почему вы кладете $ 1 $ 2 в массив, поскольку вам, кажется, нужно всего $ 2.

Обновление в соответствии с вопросом редактирования.

Вы четко поставили «матч f2 $1 с f1 $3 » (я хочу, чтобы каждый вопрос был настолько ясен), поэтому просто напишите его в коде соответственно:

  f2 $1 f1 $3 | | awk 'NR==FNR {a[$1]=$2;next} $3 in a {print $0, a[$3]}' f2 f1