2つのCSVファイルのデータ比較

2つのCSVファイルのデータ比較

3つのファイルがあります。

file1次のデータがあります。

id,name,age
1,jj,60
2,kk,45
3,ss,56

file2次のデータがあります。

id,name,age
1,jj,60
2,kk,44
3,ss,55
4,tt,66

file3フィールドは1つだけです。 IDは次のとおりです。

id
1
2
3

file1今&file2の対応するIDを比較したいと思いますfile3

出力は次のようになります。

id  file1   file2
2   age=45  age=44
3   age=56  age=55

ベストアンサー1

拡大するpaste+awk解決策:

awk -F',' -v ids=$(paste -s -d'|' <(tail -n+2 file3)) \
'BEGIN{ OFS="\t"; print "id", ARGV[1], ARGV[2] }
 FNR==1{ next }
 NR==FNR{ if ($1 ~ "^("ids")$") a[$1$2]=$3; next }
 ($1$2 in a) && a[$1$2] != $3{ 
     printf "%d\tage=%d\tage=%d\n", $1, a[$1$2], $3 
 }' file1 file2

出力:

id  file1   file2
2   age=45  age=44
3   age=56  age=55

おすすめ記事