2つのファイルfile1とfile2の特定の列を比較し、ファイル1の一致する各行を更新します。

2つのファイルfile1とfile2の特定の列を比較し、ファイル1の一致する各行を更新します。

2つのCSVファイルを比較し、最初のファイルで一致する各行を更新しようとしています。

例:

ファイル1.csv

col1,col2,col3,col4
1,11,111,1111
2,22,222,2222
3,33,333,3333

ファイル2.csv

col1,col2,col3,col4
X,11,111,XXXX
Y,22,222,YYYY
Z,ZZ,ZZZ,ZZZZ

この2つのファイル間のcol2とcol3を比較し、一致するものが見つかったら、ファイル1を更新して一致する行を取得しようとしています。

出力file1.csv

col1,col2,col3,col4
1,11,111,1111 match found
2,22,222,2222 match found
3,33,333,3333 match not found

ベストアンサー1

使用awk

$ awk -F, 'NR==FNR {a[$2,$3];next} FNR>1 {$0=$0 (($2,$3) in a?" match found" : " match not found")}1' file2.csv file1.csv
col1,col2,col3,col4
1,11,111,1111 match found
2,22,222,2222 match found
3,33,333,3333 match not found

おすすめ記事