awkは配列要素を印刷できません

awkは配列要素を印刷できません

しばらく座って、私のfile1は次のようになります。

A   S   
B   Q

ファイル2は次のようになります。

B   2

file2 の $1 を $1 file1 と一致させ、file1 $2 && file2 $2 を印刷したいと思います。出力は次のとおりです。

Q   2    

私のawk解決策は次のとおりです

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

それは私に提供しますQ- 配列の2番目の要素を印刷しません。
配列の要素を印刷する方法は?

編集する

ダミーの例で働いた答えが実際のデータでは機能しなかったので、質問を更新しました。

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

f2
ENSG00000236824.1   AAAAAAA

プラス記号を合わせf2 $1f1 $3印刷したいです。f1 $0f2 $2

私はこの答えを試しましたが、awk 'NR==FNR {a[$1]=$2;next} $3 in a {print $0, a[$1]}' f2 f1それでも
あなたが望む結果を得ることができませんでした。

awk上記のコードは、次の情報のみを提供します。

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

ベストアンサー1

ほぼすべて来ました。配列インデックスを$ 1に変更するだけです。これは両方のファイルの共通要素です。

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

$ 2だけが必要だと思うので、なぜ$ 1 $ 2を配列に入れたのかわかりません。

修正する質問に従って編集されました。

f2 $1「match」を明示的に配置したのでf1 $3(すべての質問が明確であればいいです)、コードにそれに合わせて書いてください。

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

おすすめ記事