クエリに基づいて列を追加する

クエリに基づいて列を追加する

次のファイルがあります。

aaa  bbb  ccc  DDD  
ads  zzz  caa  DDD  
aba  bab  cac  DAD  
aad  cca  cas  SFD  

そしてファイルb:

DDD  5  
DAD  13  
SFD  11

ファイルbに基づいてファイルaに5番目の列を追加したいと思います。これは、ファイルbのファイルaの列4の用語を検索し、ファイルbの列2に対応する値を使用してファイルaに5番目の列を追加することを意味します。

助けてください?

答え1

join -o 1.1,1.2,1.3,1.4,2.2 -1 4 -2 1 <(sed '1d' file1 | sort -k4) <(sed '1d' file2 | sort)

sed '1d'ヘッダー除去用(上から1行)

次に、フィールド 4 の最初のファイルをフィールド 1 の 2 番目のファイルと結合します。

また、結合が機能するにはファイルを並べ替える必要があるため、結合フィールドでファイル1を並べ替えます。

-oNMが印刷される順序です(N =ファイル、M =フィールド)。

関連情報