2つのファイル間の複数の列値の比較

2つのファイル間の複数の列値の比較

Linuxシステムには、次のデータを含む2つのCSVファイルがあります。

ファイルA

Sunil,21,write a line,2312,12-03-2022   
Ashok,22,write a para,2312,12-03-2022
Sam,23,create file using,2312,12-03-2022

文書B

21,write a line,Writer
21,write a script,Writer
23,create file using,Coder
25,create class,Coder
22,write a para,Poet
22,write a file,Writer

これで、FileAの2番目と3番目の列(21行、行の書き込みなど)をFileBと比較し、一致すると、FileBの3番目の列を印刷する必要があります。

出力:

Writer
Poet
Coder

ベストアンサー1

必要なものを取得し、データが提供されたと仮定すると、次のように達成できます。

awk -F, 'NR==FNR{array[$2,$3]; next} ($1,$2) in array { print $NF}' filea fileb

基本的にここで行うことは、array現在のレコード処理を停止したときに列2と列3を保存することです(使用するnext)。 then is$1$2of fileb in arrayif そうであれば、レコードの最後の列を参照する$NF場所を印刷します。$NF

NRFNRawkに組み込まれた変数です。 NRはこれまでのレコードの総数を表し、FNRは現在のファイルのレコード数を表します。

おすすめ記事