あるファイルの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があることを確認します。id
arrayはその値を印刷し、id[$1]
その後にfile2の$ 0の行全体が表示されます。