ファイルのある列を別の列と比較し、一致する場合は列を追加します。

ファイルのある列を別の列と比較し、一致する場合は列を追加します。

あるファイルの1つの列を別のファイルの別の列と比較したいと思います。列が一致したら、最初のファイルの最初の列を2番目のファイルの最初の列として追加したいと思います。

ファイル1

FID IID
456 2
123 1
789 3
112 4

ファイル2

IID column1 column2 column3... column464
1 Value11 Value12 etc etc ... etc
7 Value71 Value72 etc etc ... etc
2 Value21 Value22 etc etc ... etc
6 Value61 Value62 etc etc ... etc
3 Value31 Value32 etc etc ... etc

希望の出力

FID IID column1 column2 column3... column464
123 1 Value11 Value12 etc etc ... etc
456 2 Value21 Value22 etc etc ... etc
789 3 Value31 Value32 etc etc ... etc

ベストアンサー1

使用awk:

awk 'NR==FNR { id[$2]=$1; next } ($1 in id){ print id[$1], $0}' file1 file2

最初の演算ブロックでは、file1 を次の連想配列に読み込みます。idここで、キーは$ 2列、値は$ 1列です。NR==FNR最初の入力ファイルを処理するときに常にtrueの条件は、awkの内部環境変数とNR(窒素数量ecords)はFNR(Fエリー窒素数量ecord)、FNR は次の入力ファイルごとにリセットされます。

次に、次のワークブロックは、file2の最初の列$ 1があることを確認します。idarrayはその値を印刷し、id[$1]その後にfile2の$ 0の行全体が表示されます。

おすすめ記事