2

以前の投稿と非常によく似た質問があります: Unix で 1 つの列で 2 つのファイル をマージするが、2 つの列に基づいてデータをマージしたい (順序は同じなので、並べ替える必要はありません)。例、

subjectid subID2 名前 年齢
12 121 Jane 16
24 241 Kristen 90
15 151 Clarke 78
23 231 Joann 31

subjectid subID2 prob_disease
12 121 0.009
24 241 0.738
15 151 0.392
23 231 1.2E-5

そして、出力は次のようになります

subjectid SubID2 prob_disease name age
12 121 0.009 Jane 16
24 241 0.738 Kristen 90
15 151 0.392 Clarke 78
23 231 1.2E-5 Joanna 31

join を使用すると、最初の列 (subjectid) のみが考慮され、SubID2 列が繰り返されます。join または他の方法でこれを行う方法はありますか? ありがとうございました

4

2 に答える 2

2

join コマンドには、結合条件として複数のフィールドをスキャンするオプションがありません。したがって、ミックスにインテリジェンスを追加する必要があります。ファイルの各行に固定数のフィールドがあると仮定すると、次のようなものを使用できます。

join f1 f2 | awk '{print $1" "$2" "$3" "$4" "$6}'

フィールド数があなたの例に示されているとおりであれば。それ以外の場合は、いくつかのフィールドを追加または削除して、awk コマンドで出力範囲を調整する必要があります。

于 2013-04-05T18:10:38.817 に答える