しばらく座って、私の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 $1
てf1 $3
印刷したいです。f1 $0
f2 $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